Chcę warunkowo wyprowadzać kod HTML w celu wygenerowania strony, więc jaki jest najłatwiejszy sposób na wyświetlenie wielowierszowego fragmentu kodu HTML w PHP 4+? Czy musiałbym używać struktury szablonu, takiej jak Smarty?
echo '<html>', "\n"; // I'm sure there's a better way!
echo '<head>', "\n";
echo '</head>', "\n";
echo '<body>', "\n";
echo '</body>', "\n";
echo '</html>', "\n";
Odpowiedzi:
Istnieje kilka sposobów odzwierciedlenia HTML w PHP.
1. Pomiędzy tagami PHP
2. W echu
W przypadku echa, jeśli chcesz używać podwójnych cudzysłowów w swoim kodzie HTML, musisz użyć pojedynczych cudzysłowów, takich jak:
Lub możesz uciec im w ten sposób:
3. Heredocs
4. Nowdocs (od PHP 5.3.0)
Silniki szablonów są używane do używania PHP w dokumentach zawierających głównie HTML. W rzeczywistości pierwotnym celem PHP było bycie językiem szablonów. Dlatego w PHP możesz używać takich rzeczy, jak krótkie znaczniki, aby wyświetlać zmienne (np
<?=$someVariable?>
.).Istnieją inne silniki szablonów (takie jak Smarty, Twig itp.), Które sprawiają, że składnia jest jeszcze bardziej zwięzła (np
{{someVariable}}
.).Podstawową zaletą korzystania z silnika szablonów jest oddzielenie projektu ( logiki prezentacji ) od kodowania ( logika biznesowa ). Sprawia również, że kod jest czystszy i łatwiejszy w utrzymaniu na dłuższą metę.
Jeśli masz więcej pytań, zostaw komentarz.
Więcej informacji na ten temat można znaleźć w dokumentacji PHP .
UWAGA: Krótkie tagi PHP
<?
i?>
są odradzane, ponieważ są dostępne tylko wtedy, gdy są włączone za pomocąshort_open_tag
dyrektywy pliku konfiguracyjnego php.ini lub jeśli PHP zostało skonfigurowane z--enable-short-tags
opcją. Są dostępne niezależnie od ustawień od 5.4 wzwyż .źródło
<?=$var?>
. Krótkie tagi są jak zwykle odradzane i należy je usunąć (<? doStuff() ?>
).Spróbuj tak ( składnia heredoc ):
źródło
<?php $variable = "bla"; ?> <html> <body class="<?php echo $variable ?>"> </body> </html>
--- Więc pomyślałem, że brakuje kilku nawiasów i nie byłem pewien, gdzie dokładnie one pójdą. Zawsze jest zabawnie, kiedy ktoś odpowiada na moje nieco starsze komentarze, ponieważ byłam wtedy bardzo nowa.Możesz użyć alternatywnej składni alternatywnej składni dla struktur kontrolnych i wyrwać się z PHP:
źródło
Zasadniczo możesz umieścić HTML w dowolnym miejscu poza tagami PHP. Bardzo korzystne jest również przetworzenie wszystkich niezbędnych danych przed wyświetleniem jakichkolwiek danych, aby oddzielić logikę od prezentacji.
Sam wyświetlacz danych może znajdować się na dole tego samego pliku PHP lub możesz dołączyć oddzielny plik PHP składający się głównie z HTML.
Wolę ten kompaktowy styl:
Uwaga: może być konieczne użycie
<?php echo $var; ?>
zamiast w<?=$var?>
zależności od konfiguracji PHP.źródło
Jestem stronniczy w tym stylu:
Używam tagów w stylu ASP, tak. Połączenie PHP i HTML wygląda na bardzo czytelne dla moich oczu. Chodzi o to, aby znaczniki
<%
i były%>
prawidłowe.źródło
Innym podejściem jest umieszczenie kodu HTML w osobnym pliku i zaznaczenie obszaru do zmiany za pomocą symbolu zastępczego [[treść]] w tym przypadku. (Możesz także użyć sprintf zamiast str_replace.)
Alternatywnie, możesz po prostu wyprowadzić wszystkie rzeczy PHP na ekran przechwycony w buforze, napisać HTML i umieścić wynik PHP z powrotem na stronie.
Może wydawać się dziwne, aby wypisać PHP, złapać go, a następnie napisać ponownie, ale oznacza to, że możesz robić różne rzeczy formatujące ( heredoc itp.) I testować poprawnie wyjście bez kłopotów ze stroną szablon przeszkadza. (Tak przy okazji, CMS Joomla robi to w ten sposób).
To znaczy:
źródło
Po prostu użyj funkcji print, aby wyświetlić tekst w pliku PHP w następujący sposób:
źródło
źródło
Oprócz odpowiedzi Chrisa B , jeśli i tak musisz użyć
echo
, nadal chcesz, aby był prosty i uporządkowany i nie chcesz spamować kodu<?php stuff; ?>
, możesz użyć poniższej składni.Na przykład chcesz wyświetlić obrazy galerii:
Echo przyjmuje wiele parametrów, więc przy dobrym wcięciu wygląda całkiem nieźle. Używanie
echo
z parametrami jest bardziej efektywne niż łączenie.źródło
lub
źródło
Spróbuj tego:
źródło
Nie odbijaj kodu HTML.
Jeśli chcesz użyć
powinieneś to zrobić:
źródło
Oto jak to robię:
źródło