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

标签 php html formatting newline

这个问题纯粹是为了整洁的 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

因此解决方法是要么记得在每个 block 的输出末尾添加一个换行符,要么在关闭标记和其后的换行符之间插入一个空格。

关于PHP 标记删除文档中的最后一个换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11723835/

相关文章:

html - ionic 定制子标题涵盖 ion-content

css - :first-child selecting two elements

php - Preg_replace() 删除除查询末尾之外的所有内容

php - 使用 PHP 的 MYSQL 中的 UPDATE 子句可以在一个查询中更新多条记录吗?

html - 如何将 HTML 标签显示为文本

javascript - 将事件处理程序绑定(bind)到由 jQuery .html() 函数插入的元素上

Python:打印到一行,打印之间有时间延迟

sorting - 数据表 - 将其中一列格式化为货币

php - 如何用大写字母分隔单词?

php - 保存pdf到本地服务器