首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP在php/纯文本混合模式下吃换行符

PHP在php/纯文本混合模式下吃换行符
EN

Stack Overflow用户
提问于 2013-01-23 23:05:36
回答 3查看 127关注 0票数 6

这个问题让我困扰了一段时间。假设我们有一个简单的PHP-File:

代码语言:javascript
运行
复制
Line 0
Line 1
<?="Line 2"?>
Line 3

处理此文件将导致:

代码语言:javascript
运行
复制
Line 0
Line 1
Line 2Line 3

?>之后,行进到了哪里?在结束标记后放置某些字符(例如?>.)时,换行符不会被吞噬。

有没有办法控制这种行为?我不愿意将空格放在结束标记之后,因为我的IDE被配置为删除换行符之前的空格(我喜欢这样做)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-23 23:11:58

是的,确实是这样:

块的结束标记将包括紧随其后的换行符(如果存在)。

http://php.net/manual/en/language.basic-syntax.instruction-separation.php

这意味着,如果?>是一行中的最后一行,那么换行符将作为结束的PHP块的一部分被删除。您需要显式地echo一个换行符或添加一个额外的换行符。

票数 5
EN

Stack Overflow用户

发布于 2013-01-23 23:12:07

这个is actually a feature (信不信由你)。PHP使用换行符,如果它紧跟在PHP结束标记之后:

块的结束标记将包括紧随其后的换行符(如果存在)。

这显然是为了让一个以空白行结尾的PHP文件在从另一个脚本执行included时不会在输出中出现换行符。因此,这真的是一个来自过去的“保护无知者”的功能,在可预见的未来,我们必须与之共处。

如果您真的想要换行符,还有其他选择:从简单地在结束标记后添加两个换行符(第二个可以!)回显代码中的换行符。

票数 4
EN

Stack Overflow用户

发布于 2013-01-23 23:11:14

<?php?>标记之外,PHP解释器在HTML模式下工作,并且与文本内容相比,HTML模式中的空格不是问题。

要使用PHP生成文本,您应该使用普通字符串,并以这种方式构建输出:

代码语言:javascript
运行
复制
$var = "Line 2";
$s = "Line 0\nLine 1\n$var\nLine3";

至少这不会给你一个令人讨厌的惊喜,尽管是documented :)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14482765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档