gpt4 book ai didi

php - PHP xmlwriter 文档中的换行符

转载 作者:可可西里 更新时间:2023-11-01 12:31:48 25 4
gpt4 key购买 nike

我有一个使用 XMLWriter 创建的 XML 提要。它在 PHP 5.6 vagrant box 上的开发中完美运行。在运行 PHP 5.4 的实时服务器上,提要无法呈现并显示一条消息:

This page contains the following errors:

error on line 3 at column 6: XML declaration allowed only at the start of the document

如果您查看源代码,它看起来是这样的:

source

不知何故,有几行被添加到 XML 文档中。服务器之间的唯一区别是 PHP 版本(据我所知)。

这是 XMLWriter 代码的前几行:

$xml = new XMLWriter();
$xml->openURI('php://output');
$xml->startDocument("1.0");
$xml->setIndent(true);
$xml->startElement("propertyList");
$xml->writeAttribute('date', date('Y-m-d-H:i:s'));

有什么办法解决这个问题吗?

最佳答案

从 PHP 5.4 到 5.6 有相当多的变化……更不用说 libxml 的变化了……

首先显然要确保在打开之前没有空格 <?php标记或结束标记之后(如果使用)。

如果您能确定何时引入新行(假设它们是新行...您是否使用过十六进制查看器之类的东西?),将会有所帮助。尝试写入临时位置 - 想要确定这是在提供页面时还是在 xmlWriter 输出时发生。

想到的事情......

  • 也许明确说明 indetString 是什么应该。 $xml->setIndentString(" ");

  • 默认编码...?也许尝试得到那套。期望打开 xml 标签... encoding="UTF-8" .使用 startDocument('1.0', 'utf-8');并且可能应该发送标题,如:header('Content-Type: application/xml; charset=UTF-8'); .是你的default_charset UTF-8?

  • 这两种环境之间还有哪些区别?像 short_open_tag 这样的东西等

    • LIBXML_HTML_NOIMPLIED ? 5.4 左右有变化吗?

解决方法:

  • 尝试调用电话 ob_clean在开始写入输出流之前。

  • 使用 trim .

  • 升级服务器,这几天谁要上5.4:)

关于php - PHP xmlwriter 文档中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31800488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com