您的位置:首页 > 编程语言 > PHP开发

php调取webservice时解析xml遇到'<'和'>'的解决办法

2016-02-02 09:21 543 查看
最近在做一个小项目时、由于是要调取一些医院系统的数据,而这些只提供webservice的xml数据。

程序调试到最后一天要演示的时候发现在xml里面多了一个'<'导致xml无法解析。找了很多办法!

1.通过stripos()函数定位到包含的xml标签的起始位置。

2.通过substr()函数截取标签

3.通过str_replace()函数进行替换。

虽然这个方法有点笨重,但是思路还是很清晰,不过后来我发现如果xml中有多个标签里面包含'<'的时候这个方法就不是很好用了。

于是乎,想到了正则回调的方法:

function search($match){

  $match = str_replace("<", "@", $match[1]); 
 return $match;  

}

//$xml = simplexml_load_file("tes.xml");        //读取xml文件

$xml_str=file_get_contents("test.xml");

$xml_result=preg_replace_callback("/<a>(.*?)<\/a>/s", "search", $xml_str);//正则回调

$xml = simplexml_load_string($xml_result); 

print_r($xml);exit;

简单说下思路:

主要就是用正则回调把尖括号< 替换为@ 返回读取时 再把@替换回来为<

这样就简单的解决了!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php web service xml