XML声明不与PHP打得很好

问题描述:

我使用PHP来输出基于存储在MySQL数据库中的值的自定义XML。在条件开始我有以下几点:XML声明不与PHP打得很好

echo '<?xml version="1.0" encoding="UTF-8"?>'; 

(我也试过这种变化:

echo "<?xml version='1.0' encoding='UTF-8'?>"; 

无济于事)

然而,这始终是输出(在每一个浏览器,甚至从wget下载的文件查看时):

<?xml version=1.0 encoding=UTF-8 ?> 

沿线的某处,版本号和编码周围的单引号被删除。我在哪里出了问题,我能做些什么来解决这个问题?我从解析器中得到错误,我相信这是因为这个声明没有遵循这些值的单引号或双引号的XML标准。

+1

这真是奇怪的是PHP会下降行情,但即便如此,你应该使用XML文档isntead单引号的双引号。 – regality

+0

Hphph。还是一样的结果,但我想你是正确的利用双引号。 – esqew

+0

听起来像一些输出后处理正在发生。我没有这方面的经验,但是可能在'ini'设置中有'tidy.clean_output = On'这样的东西?似乎不太可能'Tidy'会删除引号而不是添加它们,但是谁知道。也许某些类似的后期处理工具是在您的服务器设置中配置的。 (无论是PHP后处理,由您的网络服务器完成的后处理)。 –

我认为这是因为您的文档的内容类型已被设置为文本/ HTML(默认由PHP)。

解决方法是将其设置为标题而不是回显它。

如:

header ("Content-Type:text/xml"); 

设置字符集:

header('Content-Type: text/xml; charset=utf-8'); 

,并确保您设置这个你输出(回声)先天下之忧。

希望帮助:)

+1

这完全不会解释自动删除报价。 – Evert