PHP форматирование вывода HTML - PullRequest
4 голосов
/ 25 апреля 2011

В ruby ​​on Rails у вас есть возможность создать более чистый и хорошо отформатированный вывод:

<div>
      <%= 3.times do -%>
      <%= "Hello World" -%>
      <%= end -%>
</div>

и вывод будет:

<div>
   Hello World
   Hello World
   Hello World
</div>

Но когда я делаю то же самое в php:

    <div>
          <?php for ($i =0; $ < 3;$i++): ?>
          <?php echo "Hello World" ?>
          <?php endfor; ?>
    </div>

Я получаю что-то вроде этого:

<div>       Hello World
 Hello World
       Hello World
    </div>

есть ли что-то вроде rubys "-%>" в php, которое помогает мне достичь того же?

Ответы [ 5 ]

1 голос
/ 25 апреля 2011

Иногда я буду делать что-то вроде следующего:

<?php
echo "<html>";
echo "   <head>";
echo "   </head>";
echo "   <body>";
echo "       <div>";
echo "           $variable";
echo "       </div>";
echo "   </body>";
echo "</html>";
?>

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

1 голос
/ 25 апреля 2011

Исправлен код: (выглядит ужасно, да?)

    <div>

<?php for ($i =0; $ < 3;$i++):
echo "\t\tHello World" ?>
endfor; ?>
    </div>

Пробелы между тегами <?php ?> сохранены, возможно, Ruby делает что-то причудливое, чтобы отфильтровать это, PHP в любом случае не делает.

Всегда сложно решить, какую часть вы хотите напечатать с помощью PHP, а какую - в нативном HTML. В любом случае, браузеры не заботятся о пробелах;)

1 голос
/ 25 апреля 2011

Вы можете использовать HTMLTidy , который поставляется вместе с PHP.

Однако вы должны учитывать, что обработка разметки с помощью Tidy может замедлить работу вашего сайта.Если вам нужно использовать Tidy, вы должны кешировать вывод или включить его только для целей отладки.

1 голос
/ 25 апреля 2011

Не думай, что это предлагается.Как и в @Antwan, вам нужно будет просто добавить свои новые строки и вкладки в свои echo s.Примечание. Не уверен, что есть функция полной проверки, чтобы справиться с этим, поскольку ваша IDE также повлияет на ваши новые строки и интервалы.

function echonice($str) {
    echo "\n\t".$str;
}
1 голос
/ 25 апреля 2011

Имейте в виду, что PHP является препроцессором, поэтому в основном он просто добавляет некоторые вещи в ваши файлы. Это означает, что для достижения правильного «стиля» или «чистоты» в вашем файле вам нужно будет добавлять новые строки и т. Д. В (произвольно) сгенерированный материал.

например, для каждого цикла добавьте \ n в конец строки, чтобы он напечатал ее в новой строке файла. Если вы хотите вкладку, вы можете сделать \ т и т. Д.

...