Как я могу эхо HTML в PHP?

Я хочу условно вывести 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"; 

Solutions Collecting From Web of "Как я могу эхо HTML в PHP?"

Есть несколько способов эхо-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}} делают синтаксис еще более кратким (например, {{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>