Php 将xml从字符串加载到数组时出现未定义错误

Php 将xml从字符串加载到数组时出现未定义错误,php,xml,Php,Xml,我有一个非常简单的xml,通过POST表单桌面应用程序接收: <?xml version="1.0" encoding="utf-8"?> <root> <receipt status="1" id="PAR/2" idreceipt="1" date="YYMMDD" errorstr="" /> <receipt status="1" id="PAR/2/2" idreceipt="2" date="YYYY-MM-DD HH:II:SS" erro

我有一个非常简单的xml,通过POST表单桌面应用程序接收:

<?xml version="1.0" encoding="utf-8"?>
<root>
<receipt status="1" id="PAR/2" idreceipt="1" date="YYMMDD" errorstr="" />
<receipt status="1" id="PAR/2/2" idreceipt="2" date="YYYY-MM-DD HH:II:SS" errorstr="" />
<receipt status="0" id="PAR/2/3" idreceipt="3" date="YYYY-MM-DD HH:II:SS" errorstr="ERROR" />
</root>

解析XML时出现问题。
我尝试了以下代码(使用来自的一些代码):


--------------^
致命错误33:字符串未启动,应为“或”
行:1
栏目:14
--------------------------------------------
--------------^
致命错误96:格式错误的声明需要版本
行:1
栏目:14
--------------------------------------------
现在,根据,这可能是由magic_quotes_运行时在您

因此,我认为这将解决您的问题:

<?php

libxml_use_internal_errors(true);

$string = $_POST['results'];

$string = stripslashes($string);

$loaded_xml = simplexml_load_string($string);
// rest of the code is the same as above

所以我几乎尝试了所有的方法-使用Ako提供的解决方案重新安装模块,但没有成功。结果是,我的服务器在处理POST时将每个特殊字符转换为字符实体,解析器没有将字符串识别为有效的XML,
而不是实际的
de>
因此我添加了:

$string = html_entity_decode($string);

它工作得很好。希望这能帮助其他人!

您确定XML存在于
$\u POST['results']
中吗?您可以使用
var\u dump($\u POST['results'])进行检查
。是的。当我回显$string或帖子时,它就在那里。simpleXML肯定安装在服务器上。所以我猜simpleXML php模块有问题。我会重新安装,让您知道php有错误记录功能。启用错误记录,为开发启用所有警告和通知,您可以更快地发现代码中的问题.
<?xml version=\"1.0\" encoding=\"utf-8\"?> <root> <receipt status=\"1\" id=\"PAR/2\" idreceipt=\"1\" date=\"YYMMDD\" errorstr=\"\" /> <receipt status=\"1\" id=\"PAR/2/2\" idreceipt=\"2\" date=\"YYYY-MM-DD HH:II:SS\" errorstr=\"\" /> <receipt status=\"0\" id=\"PAR/2/3\" idreceipt=\"3\" date=\"YYYY-MM-DD HH:II:SS\" errorstr=\"ERROR\" /> </root>
--------------^
Fatal Error 33: String not started expecting ' or "
  Line: 1
  Column: 14

--------------------------------------------

<?xml version=\"1.0\" encoding=\"utf-8\"?> <root> <receipt status=\"1\" id=\"PAR/2\" idreceipt=\"1\" date=\"YYMMDD\" errorstr=\"\" /> <receipt status=\"1\" id=\"PAR/2/2\" idreceipt=\"2\" date=\"YYYY-MM-DD HH:II:SS\" errorstr=\"\" /> <receipt status=\"0\" id=\"PAR/2/3\" idreceipt=\"3\" date=\"YYYY-MM-DD HH:II:SS\" errorstr=\"ERROR\" /> </root>
--------------^
Fatal Error 96: Malformed declaration expecting version
  Line: 1
  Column: 14

--------------------------------------------
<?php

libxml_use_internal_errors(true);

$string = $_POST['results'];

$string = stripslashes($string);

$loaded_xml = simplexml_load_string($string);
// rest of the code is the same as above
$string = html_entity_decode($string);