Как я могу повторить HTML в PHP? - PullRequest
113 голосов
/ 09 июля 2009

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

Ответы [ 12 ]

255 голосов
/ 09 июля 2009

Есть несколько способов отобразить 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}}).

Основным преимуществом использования механизма шаблонов является отделение дизайна (Presentation Logic) от кода (Business Logic). Это также делает код чище и легче поддерживать в долгосрочной перспективе.

Если у вас есть еще вопросы, не стесняйтесь оставлять комментарии. Дополнительную информацию об этом можно найти в Документации PHP .

Боже, благослови!


ПРИМЕЧАНИЕ. Короткие теги PHP <? и ?> не рекомендуется использовать, поскольку они доступны только в том случае, если они включены с помощью директивы файла конфигурации short_open_tag php.ini или если PHP был настроен с * 1041. * вариант. Они доступны независимо от настроек, начиная с 5.4 .

63 голосов
/ 09 июля 2009

попробуй так:

$variable = <<<XYZ
<html>
<body>

</body>
</html>
XYZ;
echo $variable;
29 голосов
/ 09 июля 2009

Вы можете использовать альтернативный синтаксис альтернативный синтаксис для структур управления и выйти из 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; ?>
15 голосов
/ 09 июля 2009

По сути, вы можете поместить 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.

7 голосов
/ 09 июля 2009

Другой подход - поместить 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 делает это так, кстати) то есть:

<?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 голосов
/ 09 июля 2009

Я неравнодушен к этому стилю:

  <html>
    <head>
<%    if (X)
      {
%>      <title>Definitely X</title>
<%    }
      else
      {
%>      <title>Totally not X</title>
<%    }
%>  </head>
  </html>

Да, я использую теги в стиле ASP. Смешение PHP и HTML выглядит на мой взгляд супер-читабельным. Хитрость в том, чтобы правильно расположить маркеры <% и %>.

2 голосов
/ 22 декабря 2014

Попробуйте это может помочь вам .......

<?php
echo <<<HTML

your html tags here

HTML;
?>
2 голосов
/ 03 февраля 2014
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';

echo( 'Echo as HTML' . htmlspecialchars( (string)$enter_string ) );
1 голос
/ 01 сентября 2018
echo '
<html>
<body>
</body>
</html>
';

или

echo "<html>\n<body>\n</body>\n</html>\n";
1 голос
/ 29 мая 2018

Просто используйте функцию print для отображения текста в файле PHP следующим образом

<?php

  print('

    <div class="wrap">

      <span class="textClass">TESTING</span>

    </div>


  ')

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...