本帖最后由 joebnb 于 2014-08-08 11:22:23 编辑

解决方案 »

  1.   

    $xml = preg_replace('/!|--/', '', $xml);
    var_dump(simplexml_load_string($xml));
      

  2.   

    //$xml='<!--?xml version="1.0" encoding="gbk"?-->';
    $xml = preg_replace('/!--\?|--/','', $xml);
    var_dump($xml);
    这样我试了,单独一行可以正匹配,但是在这段代码里无效。在网页元素查看器里看到返回的数值还是有注释符
      

  3.   

    之前我不懂那个是xml里的注释,现在明白了,所以想到了另一种方法,可是还是失败了,能告诉我下原因吗?
    $xml = '<xml version="1.0" encoding="gbk"?>'.$xml;
    var_dump(simplexml_load_string($xml));
    我是用字符串运算符加了一行xml的文件标记,可是用simplexml_load_string的时候依然显示失败
      

  4.   


    这是直接复制给我的代码贴上去运行后的结果...依然得去掉simplexml载入的语句才能dump出来
      

  5.   

    <?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值里面没有注释掉文件标记,可不知道问什么不能载入
      

  6.   

    在IE下查看会显示
    结束标记 'xsm' 与开始标记 'comShort' 不匹配。
      

  7.   

    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 字节。
    还有四百多字节到哪里去了?
      

  8.   

    还有400字节是一长串字符串太长我就删了半截
    谢谢你,我发现原因了,是因为PHP用utf8编码的,而获取的xml数据时gbk的,把文件里的gbk改成utf8就解决了