我试图在PHP应用程序中生成一个XML文件:
<?php
...
header('Content-Type: application/xml');
header('Content-Disposition: attachment; filename=test.xml');
echo "<?xml version=\"1.0\"?>\r\n" .
...奇怪的是,当使用我的服务器(PHPVersion5.3.8/Apache2.2.17和PHPVersion5.3.10-1/Apache2.2.22)时,是一个行提要(十六进制字符插入在输出*的开头,导致无法使用的无效)。还有还有一个关于这个的在线问题,还没解决。
所以,如果我尝试echo "bug";,我会得到4个字节,而不是3:0a 62 75 67
但是,当在本地使用WAMP服务器(PHP5.4.3/Apache2.4.2)时,我得到3个字节:62 75 67。
发布于 2013-04-02 11:01:01
看起来,0a问题是由我的主PHP文件所包含的PHP文件中的尾随输入字符引起的。当我从包含文件中删除它时,输出中的0a字符就消失了。
我觉得奇怪的是,我所经历的PHP版本之间对空格的不同处理,以及在测试社区的建议时我仍然得到了0a。
我没有时间对此进行研究,但我对遇到类似问题的人的建议是,检查包含文件中的空格是否可以发挥作用。此外,避免如下面所建议的那样结束<?php标记。
发布于 2013-03-22 19:33:13
也许是编码问题。如果您正在使用带BOM的UTF8,则在文件的开头有一个额外的字符。检查您的文件的编码,并将其转换为没有BOM的UTF8,以避免这个额外的字符。
发布于 2016-04-06 00:58:40
我刚碰到这个。我和团队花了一个小时才找到。太神奇了。我非常喜欢PHP。
这就是导致我们的原因:
<php
$code = "blah";
?php>
<EOF>注意文件末尾的NEWLINE
PHP,在其所有超凡的美丽,将解释这条换行线,你实际上是想发送给某人通过电线。毕竟它是HTML。因此,即使包含路径中的多个PHP文件以换行符结尾,响应中最多会有一个换行符。
请特别注意,任何包含或需要的文件,如果以换行符结尾,则从当前文件中回送或打印的任何文件都将加上换行符。
只是。太棒了。
https://stackoverflow.com/questions/15578271
复制相似问题