我正在编写支付网关,需要向支付服务器发送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()
的行为。