简单调用unserialize()函数会将换行符添加到输出缓冲区中 - wtf?

时间:2016-03-29 23:35:21

标签: php serialization kohana

我正在编写支付网关,需要向支付服务器发送xml-response。但是,突然之间,我的XML在生成的文档开头被换行符破坏了。

我使用Kohana 3框架,它使用PHP函数unserialize()来检索会话对象,并在调用此函数时将换行符打印到输出缓冲区。 这段代码:

<?php
echo 123;
$object = unserialize($data);
document_creation_and_outputting;

返回如下结果:

123
document_body

但是这段代码:

<?php
$object = unserialize($data);
echo 123;
document_creation_and_outputting;

返回如下文档:

(empty line)
123document_body

所以你可以看到,如果生成的doc_body没有换行符,我的脚本在第一行没有换行符(因为在第一个例子中我们没有在“123”之前看到换行符) ,并且,我保证,我使用没有BOM的UTF-8。

所以我的问题是:发生了什么事?

我在输出生成的文档之前使用ob_end_clean()来清理缓冲区,它解决了我的问题,但我真的不理解unserialize()的行为。

1 个答案:

答案 0 :(得分:0)

我是个白痴。 unserialize()收到了这个: My fail

对不起,伙计们。我刚刚完成了。