当我从命令行运行以下PHP代码时:
$ php test.php
其中test.php的内容如下
Foo
<? echo "Hello World" ?>
Bar
我得到了输出:
Foo
Hello WorldBar
而不是:
Foo
Hello World
Bar
这是我可以发誓先前版本的PHP会输出的内容。 虽然关闭的php标签现在消耗了以下换行符 到目前为止在早期版本的PHP中没有发生的字符 我记得。某些php.ini或其他配置中是否有某个设置 切换这个或类似的空白咀嚼行为的文件?
感谢。
答案 0 :(得分:2)
Foo
<? echo "Hello World" ?>
Bar
(?>
后有1个空格,例如字符串是“?&gt;”)将输出:
Foo
Hello World
Bar
此行为在PHP手册(http://www.php.net/manual/en/language.basic-syntax.phpmode.php)中指定为:
当PHP解释器遇到?&gt;关闭标签,它只是开始输出 无论发现什么(除了紧接着的新行[...]之外)
现在,回答你的问题“某些php.ini或其他配置文件中的某个设置是否会切换此类或类似的空白咀嚼行为?”
根据Orangepill提供的链接/错误报告(bugs.php.net/bug.php?id=21891),没有。在错误报告中,声明永远不会有控制此行为的选项,因为它会使编写可移植脚本更加困难。
答案 1 :(得分:1)
您需要将\n
放在字符串末尾的echo
试试这个
Foo
<? echo "Hello World\n" ?>
Bar