Какой лучший способ отформатировать длинные строки HTML в PHP? - PullRequest
4 голосов
/ 19 марта 2010

Я знаю, что это действительно субъективный вопрос, но из-за передового опыта (и читабельности) я не могу найти решение для лучшего способа форматирования длинных строк HTML. Я обычно делаю это так:

echo '
<div>
    <p>Content Inside</p>
    <div class="subbox">
        <ul>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
        </ul>
    </div>
</div>
';

Но мне все еще не нравится результат, особенно если он появляется в середине большого блока кода. Это просто грязно.

Ответы [ 6 ]

9 голосов
/ 19 марта 2010

Вы можете выйти из PHP и ввести HTML напрямую:

<?php $var = "foo"; ?>
<div>
  <ul>
    <li>Foo</li>
  </ul>
</div>
<?php $foo = "var"; ?>

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

Если вам нужно сохранить HTML-код в переменной, вы можете использовать HEREDOC :

$str = <<<EOD
<div>
  <ul>
    <li>Foo</li>
  </ul>
</div>
EOD;
3 голосов
/ 19 марта 2010

Старая школа в стиле Perl heredoc тоже работает:

echo <<<EOL
<div>
    <p>Content Inside</p>
    <div class="subbox">
        <ul>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
        </ul>
    </div>
</div>
EOL;

Использование нескольких блоков <?php ?> удобнее, но если вы находитесь в определении класса или что-то в этом роде, наследственность может быть менее неудобной (хотя печать HTML из определения класса не более чем неудобна).

3 голосов
/ 19 марта 2010

Почему бы просто не встроить свой PHP в HTML? Вот как PHP изначально был разработан для работы.

// PHP goes here
?>
<div>
    <p>Content Inside</p>
    <div class="subbox">
        <ul>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
            <li>etc.</li>
        </ul>
    </div>
</div>
<?php
// More PHP here
2 голосов
/ 11 декабря 2011

Я предпочитаю архитектуру MVC, такую ​​как Code Igniter, для отделения представления от логики. По сути, все ваши шаблоны хранятся отдельно, и вы используете альтернативные синтаксические структуры PHP, описанные здесь для форматирования HTML.

2 голосов
/ 19 марта 2010

Я бы сделал это так:

echo '<div>
         <p>Content Inside</p>
         <div class="subbox">
             <ul>
                 <li>etc.</li>
                 <li>etc.</li>
                 <li>etc.</li>
                 <li>etc.</li>
            </ul>
         </div>
      </div>';
1 голос
/ 04 апреля 2010

Лучший способ - использовать систему шаблонов, где вы можете отделить свою логику от представления. В шаблоне у вас есть только такие вещи, как:

<html>
<body>

<h1><?php echo $title; ?></h1>
<p><?php echo $myparagraph; ?></p>

</body>
</html>
...