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;
简单说下思路:
主要就是用正则回调把尖括号< 替换为@ 返回读取时 再把@替换回来为<
这样就简单的解决了!!!
程序调试到最后一天要演示的时候发现在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;
简单说下思路:
主要就是用正则回调把尖括号< 替换为@ 返回读取时 再把@替换回来为<
这样就简单的解决了!!!
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- XML 与 JSON 优劣对比
- Php Installing An Expansion
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- C#针对xml基本操作及保存配置文件应用实例