php xml 转array 函数 (原创)
/**
*Author zhudongchang
*Date 2015/6/12 原创
*xml 转array 函数
*@param string $xmlStr xml字符串
*@return string
*/
public static function convertXmlToArray($xmlStr){
$patten=<<<EOT
/(^\s*<(\s*[a-zA-Z0-9_='":]+\s*)+>.*<\s*\/(\s*[a-zA-Z0-9_='":]+\s*)+>\s*$)|(^\s*<(\s*[a-zA-Z0-9_='":]+\s*)+\/\s*>$)/s
EOT;
$pattenChildXml=<<<EOT
/^\s*<(\s*[a-zA-Z0-9_='":]+\s*)+>(.*)<\s*\/(\s*[a-zA-Z0-9_='":]+\s*)+>\s*$/s
EOT;
$res=array();
$xml = simplexml_load_string($xmlStr);
foreach($xml->children() as $val){
$key=$val->getName();
$valXml=$val->asXML();
preg_match($pattenChildXml,$valXml,$match);
$childXmlStr=$match[2];
//var_dump($match,$valXml,$childXmlStr);die();
$temp=preg_match($patten,$childXmlStr)?self::convertXmlToArray($valXml):(string)$val;
if(array_key_exists($key,$res)){
is_array($res[$key]) or $res[$key]=array($res[$key]);
$tempNew=array();
foreach($res[$key] as $k =>$v){
if(!is_int($k)){
$tempNew[]=$v;
unset($res[$key][$k]);
}
}
empty($tempNew) or $res[$key][]=$tempNew;
$res[$key][]=$temp;
}else{
$res[$key]=$temp;
}
}
return $res;
}
php xml 转array 函数 (原创)的更多相关文章
- PHP:微信小程序调用【统一下单】【微信支付】【支付回调】API;XML转Array,Array转XML方法(通用)
1.微信公众号.微信小程序开发过程中,第三方服务器与微信服务器数据交互,需要进行数据转换,必须用到这两个函数: 分别是xml_to_array.array_to_xml ; /** * 输出xml字符 ...
- PHP Array 函数
PHP Array 简介 array 函数允许您对数组进行操作. PHP 支持单维和多维的数组.同时提供了用数据库查询结果来构造数组的函数. 安装 array 函数是 PHP 核心的组成部分.无需安装 ...
- PHP 5 Array 函数
PHP Array 简介 PHP Array 函数允许您访问并操作数组. 支持简单的数组和多维数组. 安装 PHP Array 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. PHP 5 ...
- php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
本文实例总结了php常用数组array函数.分享给大家供大家参考,具体如下: array_combine 功能:用一个数组的值作为新数组的键名,另一个数组的值作为新数组的值 案例: <?php ...
- xml转为array
PHP实现微信支付,微信支付宝返回的xml结果如下: <xml> <appid><![CDATA[wx2421b1c4370ec43b]]></appid ...
- R语言数组array函数
数组是一个可以在两个以上的维度存储数据的R数据对象.例如 - 如果创建尺寸(2,3,4)的数组,那么创建4个矩形矩阵每2行3列.数组只能存储数据类型. 使用 array()函数创建数组.它需要向量作为 ...
- 将xml转为array
/** * 将xml转为array * @param string $xml * @throws Exception */ public function FromXml($xml) { if (!$ ...
- 将xml转为array 输出xml字符
//将xml转为array private function fromXml($xml){ // 禁止引用外部xml实体 libxml_disable_entity_loader(true); ret ...
- php xml转数组,数组转xml,array转xml,xml转array
//数组转XML function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key=>$val) ...
随机推荐
- Android学习——动态注册监听网络变化
新建一个BroadcastTest项目,然后修改MainActivity中的代码,如下: public class MainActivity extends AppCompatActivity { p ...
- System.DateTime.Now 24小时制。
this.Label6.Text = "当前时间:" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") ...
- css下拉菜单写法
网页导航栏的下拉效果,通过div框的显示和隐藏实现. <html> <head> <meta charset="UTF-8"> <titl ...
- C语言笔记(一)
笑话一枚:程序员 A:“哥们儿,最近手头紧,借点钱?”程序员 B:“成啊,要多少?”程序员 A:“一千行不?”程序员 B:“咱俩谁跟谁!给你凑个整,1024,拿去吧.” =============== ...
- 转:Fiddler抓包工具总结
http://www.cnblogs.com/yyhh/p/5140852.html#l02
- HDU_5810_数学,概率,方差
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5810 大意:将n个球往m个盒子中投,每个球被投入每个盒子的概率相等,求方差. 看题解说,这是二项分布( ...
- Python2X和Python3X 除法运算符的使用:
首先注明:如果没有特别说明,以下内容都是基于python 3.4的. 1. /是精确除法,//是向下取整除法,%是求模 2. %求模是基于向下取整除法规则的 3. 四舍五入取整round, 向零取整i ...
- PAT_A1120#Friend Numbers
Source: PAT A1120 Friend Numbers (20 分) Description: Two integers are called "friend numbers&qu ...
- scrapy获取重定向之前的url
通过 response.request.meta['redirect_urls'] 来获取跳转之前的链接
- xpath定位实列
这次将讲Xpath定位! 什么是Xpath: Path就是路径,xpath也类似,就像 在DOS中 D:\Auto\jack. Xpath的使用: 1:在火狐下载 FirePath 插件(图1),然后 ...