PHP标记删除文档中的最后一行换行符


PHP Tag Removes Last Newline in Document

这个问题纯粹是为了获得整洁的HTML代码输出。

在一个简单的PHP文件中,您可以使用标记来选择何时在文档中嵌入PHP。然而,当这个标记直接用于普通HTML元素之上时,分隔这两者的换行符显然会被删除或忽略。

在PHP 中观察以下代码

<div>
<?php echo "This is some extra text." ?>
</div>

输出如下

<div>
This is some extra text.</div>

然而,如果我直接在标签后面添加一些东西,

<div>
<?php echo "This is some extra text." ?> Now the newline is honored.
</div>

看来新的一行受到了尊重:

<div>
This is some extra text. Now the newline is honored.
</div>

同样,这纯粹是一个外观问题,与错误渲染页面无关。我希望源代码很好,可读性强,并且我可以在第一个echo中添加末尾的"''n"字符,但这感觉不满意,也会很烦人。这个问题有什么补救办法吗?还是我只是做错了什么?

这是PHP的一个长期问题。基本上,如果你的结束标记后面有一个换行符,PHP会吃掉它。但如果结束标记后面紧接着有其他字符(甚至是空格),那么它后面的任何换行符都会受到尊重。

例如

<?php echo "Hello"; ?>'nWorld

生产:

HelloWorld

<?php echo "Hello"; ?>'n'nWorld

生产:

Hello⏎
World

然而,

<?php echo "Hello"; ?> 'nWorld

产生

Hello ⏎
World

因此,解决方法是记住在每个块的输出末尾添加一条换行符,或者在结束标记和后面的换行符之间插入一个空格

试着像这样强行换行:

<div>
<?php echo "This is some extra text." ?>
</div>

'n字符对您来说是不可见的,但当您在之后添加额外的文本时,您会点击return/enter。

如果您希望添加的文本具有换行符,只需执行以下操作:

<?php echo "This is some extra text.'n" ?>