Недавно я печатал некоторый HTML-источник для проекта, над которым я работал. Мне нравится держать мою разметку аккуратной и удобочитаемой. Я заметил, что в некоторых местах нет разрывов строк на выведенном html, а в некоторых местах есть лишний отступ. Например, возьмите следующий код, где я сохранил отступ из исходного файла:
<div id="sections"> <ul> <?php if(!empty($details)) { ?> <li><a href="#details"><span>Details</span></a></li> <?php } if(!empty($address) { ?> <li><a href="#viewmap"><span>Location Map</span></a></li> <?php } if(!empty($reviews) { ?> <li><a href="#reviews"><span>Reviews (<?php echo $numrows; ?>)</span></a></li> <?php } if($email != null) { ?> <li><a href="#sendemail"><span>Send an Email</span></a></li> <?php } ?> </ul>
Сгенерированный вывод HTML выглядит следующим образом:
<div id="sections"> <ul> <li><a href="#details"><span>Details</span></a></li> <li><a href="#viewmap"><span>Location Map</span></a></li> <li><a href="#sendemail"><span>Send an Email</span></a></li> </ul> </div>
Здесь мы видим, что теги DIV и UL имеют два вкладки слева слева – это прекрасно. Однако теги LI имеют 5 отступов слева – это должно быть только 3, если оно соответствует моему коду. Конечный тег UL также имеет два дополнительных отступов.
Это просто ожидаемое поведение или это можно как-то исправить?
Так? Результат идеально подходит вашему коду. Я не понимаю, почему возникла проблема?
*tab**tab*<div id="sections">*newline* *tab**tab*<ul>*newline* *tab**tab*<?php if(!empty($details)) { ?> *tab**tab**tab*<li><a href="#details"><span>Details</span></a></li>*newline* *newline* *tab**tab*<?php } if(!empty($address) { ?> *tab**tab**tab*<li><a href="#viewmap"><span>Location Map</span></a></li>*newline* *newline* *tab**tab*<?php } if(!empty($reviews) { ?> *tab**tab**tab*<li><a href="#reviews"><span>Reviews (<?php echo $numrows; ?>)</span></a></li>*newline* *newline* *tab**tab*<?php } if($email != null) { ?> *tab**tab**tab*<li><a href="#sendemail"><span>Send an Email</span></a></li>*newline* *tab**tab*<?php } ?> *tab**tab*</ul>
Удалите php-код, и вы увидите, что совпадают числа вкладок и новых строк.
О и btw: первая ul должна иметь вкладку больше, потому что она находится внутри div.
Если вы беспокоитесь о вдавливании, вы можете переместить ваши теги php в начало их строк, тогда, когда они рухнут, не будет дополнительного отступа, который добавит его в следующую строку. Это, конечно, делает ваш источник гораздо труднее читать. И это гораздо важнее, чем чтение рендеринга html IMO.
Проблема в том, что вы отделили весь блок. Пробел идет от <? Php?> На каждой строке
Все, что вне тегов <?php...?>
Остается нетронутым интерпретатором PHP. Единственное исключение – это трейлинг-линия, которая промежуточно следует за закрывающим тегом, как задокументировано .
Возможно, вы смешиваете вкладки и пробелы. Если вы используете достойный редактор, должна быть функция, чтобы сделать их видимыми.
Ну, разрывы строк верны в вашем коде. Все, кроме разрыва строки сразу после ?>
Получает потушить :
[…], когда PHP попадает в теги
?>
Закрытия, он просто начинает выводить все, что он находит (за исключением сразу следующей строки новой строки – см. Разделение команд ), пока он не попадет в другой тег открытия.
Поэтому просто посмотрим на этот пример:
<?php if(!empty($details)) { ?> <li><a href="#details"><span>Details</span></a></li> <?php }
Все, кроме строки, прерывается сразу после того, как ?>
Вытаскивается, включая разрыв строки перед следующим <?php
, так:
<li><a href="#details"><span>Details</span></a></li>