0

当我从命令行运行以下 PHP 代码时:

$ php test.php

其中test.php的内容如下

Foo
<? echo "Hello World" ?>
Bar

我得到输出:

Foo
Hello WorldBar

代替:

Foo
Hello World
Bar

这就是我可以发誓以前版本的 PHP 会输出的内容。虽然关闭 php 标记现在使用以下换行符,据我所知,这在早期版本的 PHP 中没有发生。某些 php.ini 或其他配置文件中是否有设置可以切换此或类似的空格咀嚼行为?

谢谢。

4

2 回答 2

2
Foo
<? echo "Hello World" ?> 
Bar

(后面有 1 个空格?>,例如作为字符串,它是 "?> ")将输出:

Foo
Hello World
Bar

此行为在 PHP 手册 ( http://www.php.net/manual/en/language.basic-syntax.phpmode.php ) 中指定为:

当 PHP 解释器点击 ?> 结束标签时,它会简单地开始输出它找到的任何东西(除了紧随其后的换行符 [...])

现在,回答您的问题“在某些 php.ini 或其他配置文件中是否有设置可以切换此或类似的空格咀嚼行为?”

不,根据 Orangepill 提供的链接/错误报告 (bugs.php.net/bug.php?id=21891),没有。在错误报告中,声明永远不会有控制这种行为的选项,因为它使编写可移植脚本变得更加困难。

于 2013-06-17T13:57:03.093 回答
1

你需要\n在你的字符串末尾加入 echo

试试这个

Foo
<? echo "Hello World\n" ?>
Bar
于 2013-06-17T14:38:26.483 回答