Форматирование Php выходного html

#php #ruby-on-rails

#php #ruby-on-rails

Вопрос:

В 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, которые помогают мне достичь того же?

Комментарии:

1. Это не должно быть критичным, поскольку браузер будет отображать два как идентичные

2. @Mark Baker, вы правы, это не критично, я хотел узнать, есть ли подобный тег, о котором я не знаю в php, и, по-видимому, его нет.

Ответ №1:

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

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

Ответ №2:

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

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

Ответ №3:

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

 function echonice($str) {
    echo "nt".$str;
}
  

Ответ №4:

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

     <div>

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

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

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

Ответ №5:

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

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

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