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

本文介绍了一种解决XML文件中因包含特殊字符'&lt;'而导致解析失败的问题的方法。通过使用PHP的正则表达式及回调函数,可以有效地将这些特殊字符替换,从而确保XML文件能被正确解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做一个小项目时、由于是要调取一些医院系统的数据,而这些只提供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;


简单说下思路:

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


这样就简单的解决了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值