XML声明不能很好地使用PHP

XML声明不能很好地使用PHP,php,xml,quotes,Php,Xml,Quotes,我使用PHP根据MySQL数据库中存储的值输出自定义XML。在条件开始时,我有以下几点: echo '<?xml version="1.0" encoding="UTF-8"?>'; 在这条线路的某个地方,围绕版本号和编码的单引号被删除了。我哪里出了问题?我能做些什么来解决这个问题?我的解析器出现了错误,我认为这是因为该声明没有遵循XML标准,即在这些值周围使用单引号或双引号。我认为这是因为文档的内容类型已经设置为text/html(默认情况下由php设置) 解决方法是将其设置为标

我使用PHP根据MySQL数据库中存储的值输出自定义XML。在条件开始时,我有以下几点:

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

在这条线路的某个地方,围绕版本号和编码的单引号被删除了。我哪里出了问题?我能做些什么来解决这个问题?我的解析器出现了错误,我认为这是因为该声明没有遵循XML标准,即在这些值周围使用单引号或双引号。

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

解决方法是将其设置为标头,而不是回显

例如:

要设置字符集,请执行以下操作:

header('Content-Type: text/xml; charset=utf-8');
在输出(回显)任何其他内容之前,请确保已设置此选项


希望这会有所帮助:)

PHP会删除引号,这真是太奇怪了,但即使如此,您也应该使用双引号代替xml docs.Hmph的单引号。仍然是相同的结果,但我想你使用双引号是正确的。听起来好像正在进行一些输出后处理。我没有这方面的经验,但在您的
ini
设置中可能会有类似于
tidy.clean_output=On
的功能?似乎不太可能
Tidy
会删除引号而不是添加引号,但谁知道呢。可能在服务器的设置中配置了类似的后处理工具。(无论是PHP后期处理,还是由您的Web服务器完成的后期处理)。我使用的是共享托管帐户,我的选项仅限于
ini
设置。。。我只是尝试了
ini_集(“tidy.clean_输出”,“No”)结果相同。添加
退出
回显之后,查看结果。您是否有输出缓冲区,并在缓冲区中进行了一些后处理?这完全不能解释自动删除引号的原因。
<?xml version=1.0 encoding=UTF-8 ?>
header ("Content-Type:text/xml");
header('Content-Type: text/xml; charset=utf-8');