Я хочу условно вывести HTML для создания страницы, так что самый простой способ эхо-многострочных фрагментов HTML в PHP 4+? Должен ли я использовать структуру шаблонов, такую как 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";
Есть несколько способов эхо-HTML в PHP.
<?php if(condition){ ?> <!-- HTML here --> <?php } ?>
if(condition){ echo "HTML here"; }
С echos, если вы хотите использовать двойные кавычки в своем HTML, вы должны использовать одиночные кавычки:
echo '<input type="text">';
Или вы можете избежать их так:
echo "<input type=\"text\">";
Механизмы шаблонов используются для использования PHP в документах, которые содержат в основном HTML. На самом деле, первоначальная цель PHP заключалась в том, чтобы быть языком шаблонов. Вот почему с помощью PHP вы можете использовать такие вещи, как короткие теги, для эхо-переменных (например, <?=$someVariable?>
).
Существуют другие механизмы шаблонов (такие как Smarty, Twig и т. Д.), {{someVariable}}
делают синтаксис еще более кратким (например, {{someVariable}}
).
Основное преимущество использования механизма шаблонов заключается в том, что дизайн (презентационная логика) отделен от кодирования (Business Logic). Это также делает код более чистым и удобным для обслуживания в долгосрочной перспективе.
Если у вас есть еще вопросы, вы можете оставить комментарий. Дальнейшее чтение доступно по этим вопросам в документации PHP .
Бог благословил!
ПРИМЕЧАНИЕ: короткие теги PHP <?
и ?>
обескуражены, потому что они доступны только в том случае, если они включены с директивой short_open_tag
php.ini, или если PHP был настроен с опцией --enable-short-tags
. Они доступны, независимо от настроек начиная с 5.4 .
попробуйте вот так:
$variable = <<<XYZ <html> <body> </body> </html> XYZ; echo $variable;
Вы можете использовать альтернативный синтаксис альтернативного синтаксиса для структур управления и выйти из php:
<?php if ($something): ?> <some /> <tags /> <etc /> <?=$shortButControversialWayOfPrintingAVariable ?> <?php /* A comment not visible in the HTML but is a bit of a pain to write */ ?> <?php else: ?> <!-- else --> <?php endif; ?>
В основном вы можете размещать HTML везде вне PHP-тегов. Также очень полезно выполнить всю необходимую обработку данных перед отображением любых данных, чтобы отделить логику и презентацию.
Сам дисплей данных может быть внизу одного и того же файла PHP или вы можете включить отдельный файл PHP, состоящий в основном из HTML.
Я предпочитаю этот компактный стиль:
<?php /* do your processing here */ ?> <html> <head> <title><?=$title?></title> </head> <body> <?php foreach ( $something as $item ) : ?> <p><?=$item?></p> <?php endforeach; ?> </body> </html>
Примечание: вам может потребоваться использовать <?php echo $var; ?>
<?php echo $var; ?>
вместо <?=$var?>
зависимости от вашей настройки PHP.
Я частично отношусь к этому стилю:
<html> <head> <% if (X) { %> <title>Definitely X</title> <% } else { %> <title>Totally not X</title> <% } %> </head> </html>
Да, я использую теги ASP-стиля. Смешение PHP и HTML выглядит супер-читаемым для моих глаз. Трюк заключается в том, чтобы маркеры <%
и %>
порядке.
Другой подход – поместить HTML в отдельный файл и пометить область, которую нужно изменить с помощью заполнителя [[content]] в этом случае. (Вы также можете использовать sprintf вместо str_replace.)
$page = 'hello world'; $content = file_get_contents('html/welcome.html'); $pagecontent = str_replace('[[content]]',$content,$page); echo($pagecontent);
В качестве альтернативы вы можете просто выводить все материалы php на экран, записанный в буфере, затем записывать html, а затем возвращать выход php на страницу.
Может показаться странным писать php-выход, поймать его, а затем записать его снова, но это означает, что вы можете делать все виды форматирования (Heredocs и т. Д.) И проверять его корректно, без проблем с шаблоном страницы путь. (Joomla CMS делает это так, BTW), то есть:
<?php ob_start(); echo('hello world'); $php_output = ob_get_contents(); ob_end_clean(); ?> <h1> My Template page says </h1> <?php echo($php_output ); ?> <hr> template footer
В дополнение к ответу Криса Б. , если вам все равно нужно использовать echo
все равно хотите сохранить его простым и структурированным и не хотите спамить код с помощью <?php stuff; ?>
<?php stuff; ?>
, вы можете использовать синтаксис ниже.
Например, вы хотите отобразить изображения галереи:
foreach($images as $image) { echo '<li>', '<a href="', site_url(), 'images/', $image['name'], '">', '<img ', 'class="image" ', 'title="', $image['title'], '" ', 'src="', site_url(), 'images/thumbs/', $image['filename'], '" ', 'alt="', $image['description'], '"', '>', '</a>', '</li>'; }
Echo принимает несколько параметров, поэтому с хорошим отступом он выглядит довольно хорошо. Также использование echo
с параметрами более эффективно, чем конкатенация.
Попробуйте это, может помочь вам …….
<?php echo <<<HTML your html tags here HTML; ?>
$ Enter_string = 'Пример'; echo ('Echo as HTML'.htmlspecialchars ((string) $ enter_string));
не эхо из HTML
если вы хотите использовать
<?php echo "<h1> $title; </h1>"; ?>
вы должны это делать:
<h1><?= $title;?></h1>