运行此文件时:
works
fine
<?php echo 'except when it'; ?>
<?php echo 'does not'; ?>
我希望看到以下输出:
works
fine
except when it
does not
因为在第一个echo语句之后显然有2个换行符,而是打印出来:
works
fine
except when it
does not
如果除了php代码之外什么都没有,那么php会删除换行符吗?为什么会这样?
答案 0 :(得分:2)
手册对此的唯一真实评论是:
块的结束标记将包括紧接着的新行(如果有的话)。
http://php.net/manual/en/language.basic-syntax.instruction-separation.php
含义,?>\n
被视为块关闭分隔符,并且都从最终输出中删除。我希望这是在代码中删除不必要的空行:
<ul>
<?php foreach (..) ?>
<li>..</li>
然而,它确实难以控制换行的输出,并且没有优雅的方法来解决它:
?> \n
)之后添加一个额外的空格,这会导致输出换行符(但也会输出空格)答案 1 :(得分:0)
是的,这在尝试获得格式良好的HTML(例如
)时非常痛苦<label>
<?= $label ?>
</label>
,在这种情况下,其输出为
<label>
This is label </label>
因此必须有一个新的换行
<label>
<?= $label ?>
</label>
这使代码更难看-或者,您可以“仅”在标签后添加一个空格,但这很愚蠢。好的,HTML无关紧要,但是如果您输出计划文本或某些结构化数据,则可能会出错。
我有一种有趣的感觉,在PHP的早期,对于一个需要换行的情况有一个不同的结束标记,但是我找不到任何引用。就像
<?= $label /?>
但是也许就在我的头上?
答案 2 :(得分:-2)
PHP部分本身不会输出任何换行符,因为您没有任何理由这样做。
您可以通过回显\n
来显式输出换行符,如:
works
fine
<?php echo 'except when it\n'; ?>
<?php echo 'does not'; ?>
应该给出正确的结果。
当结束标记后跟\n
时,\n
将被视为结束标记的一部分,并从输出中删除。