• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapisanie wygenerowanego kodu HTML do osobnego pliku

VPS Starter Arubacloud
0 głosów
116 wizyt
pytanie zadane 3 sierpnia 2017 w PHP przez sc4rface Dyskutant (7,710 p.)

Czy istnieje możliwość zapisania wygenerowanego kodu HTML, który tworzy się za pomocą PHP do osobnego pliku?

Napisałem coś takiego, aczkolwiek zamiast wygenerowanego kodu HTML pobiera on mi cały kod PHP do pliku, a nie o to chodzi.

	$fp = fopen('plik.html', 'w');
	fwrite($fp, file_get_contents('./generate.php'));
	fclose($fp);

 

1 odpowiedź

0 głosów
odpowiedź 3 sierpnia 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)

Ale że jak? W PHP robisz coś, generuje Ci to kod HTML i chcesz go zapisać po prostu do innego pliku?

$code = '<p>bla</p>';
$code .= '<p>bla</p>';
file_put_contents('file.html', $code);

I już. W efekcie dostaniesz plik file.html zawierający <p>bla</p><p>bla</p>.

komentarz 3 sierpnia 2017 przez sc4rface Dyskutant (7,710 p.)
error_reporting(E_ALL);
	ini_set('display_errors',0); 
	
	@$tytul = $_POST['k-title'];
	@$opis = $_POST['k-desc'];
	
	$fp = fopen('plik.html', 'w');
	fwrite($fp, file_get_contents('./generate.php'));
	fclose($fp);

	// albo dla PHP 5:

	file_put_contents('plik.html', file_get_contents('./generate.php'));

	/* echo "<pre>";
	print_r($_POST);
	echo "</pre>"; */
	
	if ($tytul == '' || $opis == '') {
		
		echo '<div><p>Błąd</p><p>Uzupełnij wszystkie pola generatora!</p>';
		
	} else {
		
		
		echo '<div style="max-width: 1050px; margin-left: auto; margin-right: auto;">';
		echo '<div style="padding-top: 50px; padding-bottom: 50px;">';
		echo '<p style="font-size: 30px; text-align: center;">'.$tytul.'</p>';
		echo '<p style="font-size: 15px; text-align: justify;">'.$opis.'</p>';
		echo '</div>';
			
		echo '<div style="width: 100%; text-align: center; background-color: #eee; font-weight: 200; line-height: 0.92em; padding: 23px 0; font-size: 30px;">Specyfikacja techniczna</div>';
		echo '<table style="font-size: 14px; border: none; border-top: 1px solid #dbdbdb; border-bottom: 1px solid #dbdbdb; width: 100%;" border="0" cellspacing="0" cellpadding="5px"><tbody>';
		
		$cechy = array_combine($_POST['cecha'], $_POST['cecha-opis']);
		foreach($cechy as $klucz => $wartosc) {
			
			echo '<tr><td style="padding: 3px 10px; text-align: right; border-right: 1px solid #dbdbdb;" width="50%">';
			echo $klucz;
			echo '</td>';
			echo '<td style="padding: 3px 10px; text-align: left;" width="50%">';
			echo $wartosc;
			echo '</td>';
			echo '</tr>';
		}
		
		echo '</tbody></table>';
		
		$prezentacje = array();
		for($i = 0; $i < count($_POST['pwidth']); $i++) {
		$prezentacja = array();
		$prezentacja['pwidth'] = $_POST['pwidth'][$i];
		$prezentacja['pheight'] = $_POST['pheight'][$i];
		$prezentacja['psource'] = $_POST['psource'][$i];
		array_push($prezentacje, $prezentacja);
		}

		foreach($prezentacje as $p) {
		echo '<img style="width: ' . $p['pwidth'] . 'px; height: ' . $p['pheight'] . 'px;" src="' . $p['psource'] . '" />';
		}
		
		echo '<div style="clear: both;"></div>';
		
		$section = array();
		for($a = 0; $a < count($_POST['sectionwidth']); $a++) {
		$sesfull = array();
		$sesfull['sectionwidth'] = $_POST['sectionwidth'][$a];
		$sesfull['sectionheight'] = $_POST['sectionheight'][$a];
		$sesfull['bg'] = $_POST['bg'][$a];
		$sesfull['sectioncolor'] = $_POST['sectioncolor'][$a];
		$sesfull['inputwidth'] = $_POST['inputwidth'][$a];
		array_push($section, $sesfull);
		}
		
		foreach ($_POST['section'] as $sekcja) {
            echo '<div style="margin: 0; float: left; width: '.$sekcja['sectionwidth'].'px; height: '.$sekcja['sectionheight'].'px; background: #'.$sekcja['bg'].'; color: #'.$sekcja['sectioncolor'].';">';
            foreach ($sekcja['input'] as $input) {
                echo '<p style="margin-left: auto; margin-right: auto; width: '.$input['inputwidth'].'px;">'.$input['inputtext'].'</p>';
            }
            echo '</div>';
        }
		
		echo '<div style="width: 100%; text-align: center; background-color: #eee; font-weight: 200; line-height: 0.92em; padding: 23px 0; font-size: 30px; clear: both;">Galeria zdjęć</div>';
			
		$gallery = array_combine($_POST['srcphoto'], $_POST['descphoto']);
		foreach ($gallery as $source => $alt) {
		echo '<img style="width: 100%; margin-bottom: 25px;" src="'.$source.'" alt="'.$alt.'" /></img>';
		}
		echo '</div>';
		}

Taki mam kod, ogólnie współpracuje tutaj ze sobą jeszcze inny język - bo z kolei zmienne są generowane w JavaScript i przekazywane hidden inputami.

Tak czy inaczej, chciałbym wyodrębnić z tego wygenerowany HTML, a nie PHP.

komentarz 3 sierpnia 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)
Cały HTML zamiast echować (wyświetlać) dopisuj do zmiennej i na koniec zapisz to do pliku? Coś takiego w skrócie pokazałem wyżej, chyba najprościej.

Chyba że nie chcesz nadpisywać pliku tylko np. dopisywać do tego co już jest. Wtedy zamiast file_put_contents wystarczy fopen z odpowiednim trybem i fwrite.
komentarz 4 sierpnia 2017 przez sc4rface Dyskutant (7,710 p.)
A jest jakaś możliwość jednoczesnego i wyświetlenia i zapisania do pliku tylko HTML'a? Bo zamysł jest taki, że to co generuje PHP to podgląd wygenerowanej strony. Użytkownik widzi, co generator stworzył.
komentarz 4 sierpnia 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)

Wyświetl zawartość zmiennej, która przechowuje ten kod?

$code = '<p>bla</p>';
$code .= '<p>bla</p>';
file_put_contents('file.html', $code);
echo $code;
komentarz 4 sierpnia 2017 przez sc4rface Dyskutant (7,710 p.)

Na stacku zalecili mi użycie buforowania ob_start() i właśnie refaktoryzuję kod pod tą logikę. Tak czy inaczej, o ile pojedyncze zmienne wygladają spoko, to totalnie nie wiem jak wyświetlić coś, co jest generowane w pętli, np.:

 


		$cechy = array_combine($_POST['cecha'], $_POST['cecha-opis']);
		foreach($cechy as $klucz => $wartosc) {
			
			<tr><td style="padding: 3px 10px; text-align: right; border-right: 1px solid #dbdbdb;" width="50%">
			<?php echo $klucz ?>
			</td>';
			<td style="padding: 3px 10px; text-align: left;" width="50%">
			<?php echo $wartosc; ?>
			</td>
			</tr>
		}


        

 

 

Podobne pytania

0 głosów
1 odpowiedź 629 wizyt
0 głosów
0 odpowiedzi 118 wizyt
0 głosów
2 odpowiedzi 191 wizyt
pytanie zadane 15 sierpnia 2022 w PHP przez PtaQ Początkujący (280 p.)

92,453 zapytań

141,262 odpowiedzi

319,087 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...