XML声明与PHP不一致

esq*_*qew 5 php xml quotes

我正在使用PHP根据存储在MySQL数据库中的值输出自定义XML.我在条件开始时有以下内容:

echo '<?xml version="1.0" encoding="UTF-8"?>';
Run Code Online (Sandbox Code Playgroud)

(我也尝试过这种变化:

echo "<?xml version='1.0' encoding='UTF-8'?>";
Run Code Online (Sandbox Code Playgroud)

无济于事.)

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

<?xml version=1.0 encoding=UTF-8 ?>
Run Code Online (Sandbox Code Playgroud)

沿着该行的某处,版本号和编码周围的单引号被删除.我哪里出错了,我该怎么做才能解决这个问题?我从我的解析器中得到错误,我相信这是因为这个声明不遵循围绕这些值使用单引号或双引号的XML标准.

dns*_*hio 1

我认为这是因为您的文档的内容类型已经设置为text/html(默认情况下由php设置)。

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

例如:

header ("Content-Type:text/xml");
Run Code Online (Sandbox Code Playgroud)

设置字符集:

header('Content-Type: text/xml; charset=utf-8');
Run Code Online (Sandbox Code Playgroud)

并确保在输出(回显)任何其他内容之前设置此项。

希望有帮助:)