Как я могу Эхо 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";
12 104

12 ответов:

есть несколько способов Эхо 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}}).

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

если у вас есть еще вопросы, не стесняйтесь оставлять комментарии. Дальнейшее чтение доступно на этих вещах в 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; ?> вместо <?=$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 делает это таким образом, кстати) т. е.:

<?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; ?>'s, Вы можете использовать синтаксис ниже.

например, вы хотите отобразить изображения галереи:

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 с параметрами является более эффективным, чем сцепление.

Попробуйте Это Может Помочь Вам.......

<?php
echo <<<HTML

your html tags here

HTML;
?>

не эхо из HTML

Если вы хотите использовать

<?php echo "<h1>  $title; </h1>"; ?>

вы должны делать это:

<h1><?= $title;?></h1>
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';

echo( 'Echo as HTML' . htmlspecialchars( (string)$enter_string ) );

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

<?php

  print('

    <div class="wrap">

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

    </div>


  ')

?>
echo '
<html>
<body>
</body>
</html>
';

или

echo "<html>\n<body>\n</body>\n</html>\n";