PHP和stdin / stdout:开头的额外换行符来自哪里?

时间:2011-11-25 02:50:23

标签: php command-line-interface

我正在使用PHP来处理一些文件(运行regexp,替换等),我注意到在处理之后,在我处理的所有文件的开头总是有换行符。我把它缩小到这几行:

#!/usr/bin/php

<?php
$test = file('php://stdin');

file_put_contents('php://stdout',$test);

?>

如果你保存它并通过它管道一些文本,你会注意到输出开头有一个换行符。它来自哪里以及如何摆脱它?谢谢!

PS:PHP版本为:带有Suhosin-Patch(cli)的PHP 5.3.6(内置:2011年9月8日19:34:00)

2 个答案:

答案 0 :(得分:8)

呃,它在shebang线和<?php之间。我认为你可以很容易地找出如何删除它。

答案 1 :(得分:0)

#!/usr/bin/php
    <---blank line here
<?php

请记住,没有PHP脚本这样的东西。只有文件碰巧嵌入了PHP代码块。 <?php ?>标记集之外的任何内容都被PHP引擎视为“输出”。这意味着将输出shebang和<?php开始标记之间的空白行。