2011-04-24 3 views
4

В Ruby On Rails, у вас есть возможность создать экологически чистой и хорошо отформатированный вывод:Php выход форматирования HTML

<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

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

+0

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

ответ

1

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

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

1

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

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

1

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

function echonice($str) { 
    echo "\n\t".$str; 
} 
1

Фиксированный код: (выглядит некрасиво да?)

<div> 

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

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

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

1

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

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

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

Смежные вопросы