Вопрос

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

1.Между тегами PHP

<?php if(condition){ ?>
     <!-- HTML here -->
<?php } ?>

2.В эхе

if(condition){
     echo "HTML here";
}

Что касается эха, если вы хотите использовать двойные кавычки в своем HTML, вы должны использовать эхо одинарных кавычек следующим образом:

echo '<input type="text">';

Или вы можете избежать их так:

echo "<input type=\"text\">";

3.Хередокс

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

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

<?php
echo <<<HTML

your html tags here

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

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

В дополнение к Крис Б. ответьте, если вам нужно использовать 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 с параметрами более эффективно, чем объединение.

не отображать HTML

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

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

вам следует делать это:

<h1><?= $title;?></h1>

Просто используйте Распечатать функция для отображения текста в файле 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";

Вот как я это делаю:

<?php if($contition == true){ ?>
         <input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
         <p>No input here </p>
<?php } ?>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top