请问这个xml怎么用simplexml解析,vardump总是false 本帖最后由 joebnb 于 2014-08-08 11:22:23 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $xml = preg_replace('/!|--/', '', $xml);var_dump(simplexml_load_string($xml)); //$xml='<!--?xml version="1.0" encoding="gbk"?-->'; $xml = preg_replace('/!--\?|--/','', $xml); var_dump($xml);这样我试了,单独一行可以正匹配,但是在这段代码里无效。在网页元素查看器里看到返回的数值还是有注释符 之前我不懂那个是xml里的注释,现在明白了,所以想到了另一种方法,可是还是失败了,能告诉我下原因吗? $xml = '<xml version="1.0" encoding="gbk"?>'.$xml; var_dump(simplexml_load_string($xml));我是用字符串运算符加了一行xml的文件标记,可是用simplexml_load_string的时候依然显示失败 这是直接复制给我的代码贴上去运行后的结果...依然得去掉simplexml载入的语句才能dump出来 <?xml version="1.0" encoding="gbk"?><xsm code="0000" msg="验证成功abc" trans_time="20140808162708"><userId>114</userId><nickName>wedc</nickName><userType>2</userType><comId>116</comId><saledptId>11601</saledptId><refId>1062014</refId><comName></comName><domainUrl>v=2014080600</domainUrl><comType>02</comType><comShort></comShort><parentComId>11620001</parentComId><expirationTime>1407488228735</expirationTime><planText>10116226011162288228735</planText><signatureValue>c6959b4eacf7b2f</signatureValue></xsm>这是我用fwrite写入的$xml值里面没有注释掉文件标记,可不知道问什么不能载入 在IE下查看会显示结束标记 'xsm' 与开始标记 'comShort' 不匹配。 SimpleXMLElement Object( [@attributes] => Array ( [code] => 0000 [msg] => 验证成功abc [trans_time] => 20140808162708 ) [userId] => 114 [nickName] => wedc [userType] => 2 [comId] => 116 [saledptId] => 11601 [refId] => 1062014 [comName] => SimpleXMLElement Object ( ) [domainUrl] => v=2014080600 [comType] => 02 [comShort] => SimpleXMLElement Object ( ) [parentComId] => 11620001 [expirationTime] => 1407488228735 [planText] => 10116226011162288228735 [signatureValue] => c6959b4eacf7b2f)这不是可以吗?你截图中显示字符串长度为 984 字节,而你贴出的只有 509 字节。还有四百多字节到哪里去了? 还有400字节是一长串字符串太长我就删了半截谢谢你,我发现原因了,是因为PHP用utf8编码的,而获取的xml数据时gbk的,把文件里的gbk改成utf8就解决了 如何生成22位的时间戳? onclick事件 把list换成dropdownlist 两数据表相连自动生成自增的NO号 【求助】选课系统中的人数限制如何解决? PHP中关于登录成功后更新最后登录信息的问题 发现一个很严重的问题——无法停止php程序的运行 如何用php发送邮件阿?急!!! 初学者的问题,请各位师哥师姐帮忙。 谁在用PHP进行面向对象编程?请给举一个PHP多形性的例子OK? php 正规替换的结果怎么位移?? php服务器端如何获得multipart/form-data post的json数据
var_dump(simplexml_load_string($xml));
$xml = preg_replace('/!--\?|--/','', $xml);
var_dump($xml);
这样我试了,单独一行可以正匹配,但是在这段代码里无效。在网页元素查看器里看到返回的数值还是有注释符
$xml = '<xml version="1.0" encoding="gbk"?>'.$xml;
var_dump(simplexml_load_string($xml));
我是用字符串运算符加了一行xml的文件标记,可是用simplexml_load_string的时候依然显示失败
这是直接复制给我的代码贴上去运行后的结果...依然得去掉simplexml载入的语句才能dump出来
这是我用fwrite写入的$xml值里面没有注释掉文件标记,可不知道问什么不能载入
结束标记 'xsm' 与开始标记 'comShort' 不匹配。
(
[@attributes] => Array
(
[code] => 0000
[msg] => 验证成功abc
[trans_time] => 20140808162708
) [userId] => 114
[nickName] => wedc
[userType] => 2
[comId] => 116
[saledptId] => 11601
[refId] => 1062014
[comName] => SimpleXMLElement Object
(
) [domainUrl] => v=2014080600
[comType] => 02
[comShort] => SimpleXMLElement Object
(
) [parentComId] => 11620001
[expirationTime] => 1407488228735
[planText] => 10116226011162288228735
[signatureValue] => c6959b4eacf7b2f
)这不是可以吗?你截图中显示字符串长度为 984 字节,而你贴出的只有 509 字节。
还有四百多字节到哪里去了?
谢谢你,我发现原因了,是因为PHP用utf8编码的,而获取的xml数据时gbk的,把文件里的gbk改成utf8就解决了