/**
*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 函数 (原创)的更多相关文章

  1. PHP:微信小程序调用【统一下单】【微信支付】【支付回调】API;XML转Array,Array转XML方法(通用)

    1.微信公众号.微信小程序开发过程中,第三方服务器与微信服务器数据交互,需要进行数据转换,必须用到这两个函数: 分别是xml_to_array.array_to_xml ; /** * 输出xml字符 ...

  2. PHP Array 函数

    PHP Array 简介 array 函数允许您对数组进行操作. PHP 支持单维和多维的数组.同时提供了用数据库查询结果来构造数组的函数. 安装 array 函数是 PHP 核心的组成部分.无需安装 ...

  3. PHP 5 Array 函数

    PHP Array 简介 PHP Array 函数允许您访问并操作数组. 支持简单的数组和多维数组. 安装 PHP Array 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. PHP 5 ...

  4. php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】

    本文实例总结了php常用数组array函数.分享给大家供大家参考,具体如下: array_combine 功能:用一个数组的值作为新数组的键名,另一个数组的值作为新数组的值 案例: <?php ...

  5. xml转为array

    PHP实现微信支付,微信支付宝返回的xml结果如下: <xml>   <appid><![CDATA[wx2421b1c4370ec43b]]></appid ...

  6. R语言数组array函数

    数组是一个可以在两个以上的维度存储数据的R数据对象.例如 - 如果创建尺寸(2,3,4)的数组,那么创建4个矩形矩阵每2行3列.数组只能存储数据类型. 使用 array()函数创建数组.它需要向量作为 ...

  7. 将xml转为array

    /** * 将xml转为array * @param string $xml * @throws Exception */ public function FromXml($xml) { if (!$ ...

  8. 将xml转为array 输出xml字符

    //将xml转为array private function fromXml($xml){ // 禁止引用外部xml实体 libxml_disable_entity_loader(true); ret ...

  9. php xml转数组,数组转xml,array转xml,xml转array

    //数组转XML function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key=>$val) ...

随机推荐

  1. GitHub上fork别人打代码后如何保持和原作者同步的更新

    1.进入你的GitHub发起Pull  request 2.选择compare across  forks 3.反向操作.base fork改为自己的,head fork改为原作者的 4.点击 cre ...

  2. ListView使用、ListView优化和遇到的问题

    1.先写遇到的问题: a.ListView只显示一个item. listview只显示一个item,并且做了listview的点击事件监听打印 Bean 对象的属性和哈希值,发现只有显示的那个 Bea ...

  3. 元信息标记---meta

    位于<head></head>之间 1.设置页面关键字: <meta name="keywords" content="输入具体关键字&qu ...

  4. PHP执行Mysql数据库的备份和还原

    使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先查出需要备份的表的 ...

  5. String类面试坑题

    1.面试坑题F:\SHJT\JavaWorkspace\JavaSE\workspace\day13ezra\src\cn\itcast\sh\classcode\BTStringLastIndexO ...

  6. Christopher G. Atkeson 简介

    有一个事实:双足机器人的稳定性问题单靠算法是搞不定的!!! 在2015 DARPA 机器人挑战赛中,许多参赛团队的机器人使用了Atlas,他们通过安装他们自己的软件并修改来让机器人保持平衡.来自WPI ...

  7. 作业07之《MVC模式》

    MVC(Model View Controller)模型-视图-控制器 MVC与模板概念的理解 MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的 ...

  8. sql 排序

    select count(*) from vote group by contents PERCENT * from vote order by contents)as A group by cont ...

  9. crypto-js RC4和hash_hmac运用

    遇到一个问题,前端需要加密,可能用到一些算法,推荐这个库:crypto-js, RC4是一个可逆的加密,看下用法: import CryptoJS from 'crypto-js'; const RC ...

  10. [pytorch学习]2. 官网60分钟教程摘要

    https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 1. Pytorch的基本单元,tensor,本质上和num ...