【问题标题】:PHP tags deleting trailing newlinePHP标签删除尾随换行符
【发布时间】:2013-06-17 13:51:18
【问题描述】:

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

$ php test.php

其中test.php的内容如下

Foo
<? echo "Hello World" ?>
Bar

我得到了输出:

Foo
Hello WorldBar

代替:

Foo
Hello World
Bar

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

谢谢。

【问题讨论】:

标签: php newline whitespace


【解决方案1】:
Foo
<? echo "Hello World" ?> 
Bar

?&gt; 后面有 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)。在错误报告中,指出永远无法控制此行为,因为它使编写可移植脚本变得更加困难。

【讨论】:

    【解决方案2】:

    你需要把\n放在你的字符串末尾的 echo

    试试这个

    Foo
    <? echo "Hello World\n" ?>
    Bar
    

    【讨论】:

      猜你喜欢
      • 2011-04-01
      • 2010-09-21
      • 1970-01-01
      • 2016-08-20
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多