При запуске этого файла:
works fine <?php echo 'except when it'; ?> <?php echo 'does not'; ?>
Я ожидаю увидеть следующий результат:
works fine except when it does not
Поскольку после первого выражения echo, очевидно, две строки новой строки, но вместо этого он печатает:
works fine except when it does not
Итак, php удаляет новую строку, если в строке нет ничего, кроме php-кода? Почему это происходит?
Единственный реальный комментарий, о котором говорится в руководстве:
Заключительный тег для блока будет включать в себя сразу же завершающую новую строку, если таковая присутствует.
http://php.net/manual/en/language.basic-syntax.instruction-separation.php
Значение, ?>\n
берется как разделитель закрытия блока, и оба они удаляются из окончательного вывода. Я ожидаю, что это удалить ненужные пустые строки в коде следующим образом:
<ul> <?php foreach (..) ?> <li>..</li>
Тем не менее, это затрудняет контроль вывода новых строк, и нет изящного способа его решения:
?> \n
), из-за чего выводится новая строка (но также и пробел) Сама часть PHP не выводит никаких новых строк, потому что вы не дали никаких оснований для этого. Вы можете явно выводить новую строку, повторяя \n
как:
works fine <?php echo 'except when it\n'; ?> <?php echo 'does not'; ?>
Должен дать правильный результат. За закрывающим тегом следует \n
, что \n
будет считаться частью закрывающего тега и удаляется из вывода.