Как я могу эхо HTML в PHP?
Я хочу условно вывести HTML для создания страницы, так что самый простой способ эхо-многострочных фрагментов HTML в PHP 4+? Должен ли я использовать структуру шаблонов, такую как Smarty?
echo '<html>', "\n"; // I'm sure there a better way!
echo '<head>', "\n";
echo '</head>', "\n";
echo '<body>', "\n";
echo '</body>', "\n";
echo '</html>', "\n";
Ответы
Ответ 1
Есть несколько способов эхо-HTML в PHP.
1. Между тегами PHP
<?php if(condition){ ?>
<!-- HTML here -->
<?php } ?>
2. В эхо
if(condition){
echo "HTML here";
}
С echos, если вы хотите использовать двойные кавычки в своем HTML, вы должны использовать одиночные кавычки вроде:
echo '<input type="text">';
Или вы можете избежать их так:
echo "<input type=\"text\">";
3. Heredocs
4. Nowdocs (начиная с PHP 5.3.0)
Механизмы шаблонов используются для использования PHP в документах, которые содержат в основном HTML. Фактически, первоначальная цель PHP заключалась в том, чтобы быть языком шаблонов. Поэтому с PHP вы можете использовать такие вещи, как короткие теги, для эхо-переменных (например, <?=$someVariable?>
).
Существуют другие механизмы шаблонов (такие как Smarty, Twig и т.д.), которые делают синтаксис еще более кратким (например, {{someVariable}}
).
Основное преимущество использования механизма шаблонов заключается в том, что дизайн (презентационная логика) отделен от кодирования (Business Logic). Это также делает код более чистым и более легким в обслуживании в долгосрочной перспективе.
Если у вас есть еще вопросы, вы можете оставить комментарий.
Дальнейшее чтение доступно по этим вопросам в Документация по PHP.
Бог благословит!
ПРИМЕЧАНИЕ. короткие теги PHP <?
и ?>
обескуражены, потому что они доступны только в том случае, если они включены с директивой файла конфигурации short_open_tag
php.ini, или если PHP был настроен с помощью --enable-short-tags
. Они доступны, независимо от настроек начиная с 5.4 и далее.
Ответ 2
попробуйте вот так:
$variable = <<<XYZ
<html>
<body>
</body>
</html>
XYZ;
echo $variable;
Ответ 3
Вы можете использовать альтернативный синтаксис альтернативного синтаксиса для структур управления и выйти из 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; ?>
Ответ 4
В принципе, вы можете помещать 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; ?>
вместо <?=$var?>
в зависимости от вашей установки PHP.
Ответ 5
Я частично отношусь к этому стилю:
<html>
<head>
<% if (X)
{
%> <title>Definitely X</title>
<% }
else
{
%> <title>Totally not X</title>
<% }
%> </head>
</html>
Я использую теги ASP-стиля, да. Смешение PHP и HTML выглядит супер-читаемым для моих глаз. Трюк заключается в том, что маркеры <%
и %>
находятся в правильном направлении.
Ответ 6
Другой подход - поместить 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 out, поймать его, а затем записать его снова, но это означает, что вы можете делать все виды форматирования (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
Ответ 7
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';
echo( 'Echo as HTML' . htmlspecialchars( (string)$enter_string ) );
Ответ 8
Попробуйте это, может помочь вам........
<?php
echo <<<HTML
your html tags here
HTML;
?>
Ответ 9
В дополнение к ответу Chris B, если вам нужно использовать echo
, все равно хотите сохранить его простым и структурированным и не хотите спамить кода с помощью <?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
с параметрами более эффективно, чем конкатенация.
Ответ 10
не выдает HTML
если вы хотите использовать
<?php echo "<h1> $title; </h1>"; ?>
вы должны это делать:
<h1><?= $title;?></h1>
Ответ 11
Просто используйте функцию печати, чтобы отобразить текст в файле PHP следующим образом
<?php
print('
<div class="wrap">
<span class="textClass">TESTING</span>
</div>
')
?>
Ответ 12
echo '
<html>
<body>
</body>
</html>
';
или
echo "<html>\n<body>\n</body>\n</html>\n";
Ответ 13
Вот как я это делаю:
<?php if($contition == true){ ?>
<input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
<p>No input here </p>
<?php } ?>