• 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

Object Storage Arubacloud
0 głosów
123 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,950 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,950 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,950 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ź 660 wizyt
0 głosów
0 odpowiedzi 121 wizyt
0 głosów
2 odpowiedzi 199 wizyt
pytanie zadane 15 sierpnia 2022 w PHP przez PtaQ Początkujący (280 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...