PHP XML To Array将XML转换为数组
- // Xml 转 数组, 包括根键,忽略空元素和属性,尚有重大错误
- function xml_to_array( $xml )
- {
- $reg = "/<(\\w+)[^>]*?>([\\x00-\\xFF]*?)<\\/\\1>/";
- if(preg_match_all($reg, $xml, $matches))
- {
- $count = count($matches[0]);
- $arr = array();
- for($i = 0; $i < $count; $i++)
- {
- $key= $matches[1][$i];
- $val = xml_to_array( $matches[2][$i] ); // 递归
- if(array_key_exists($key, $arr))
- {
- if(is_array($arr[$key]))
- {
- if(!array_key_exists(0,$arr[$key]))
- {
- $arr[$key] = array($arr[$key]);
- }
- }else{
- $arr[$key] = array($arr[$key]);
- }
- $arr[$key][] = $val;
- }else{
- $arr[$key] = $val;
- }
- }
- return $arr;
- }else{
- return $xml;
- }
- }
- // Xml 转 数组, 不包括根键
- function xmltoarray( $xml )
- {
- $arr = xml_to_array($xml);
- $key = array_keys($arr);
- return $arr[$key[0]];
- }
- // 类似 XPATH 的数组选择器
- function xml_array_select( $arr, $arrpath )
- {
- $arrpath = trim( $arrpath, '/' );
- if(!$arrpath) return $arr;
- $self = 'xml_array_select';
- $pos = strpos( $arrpath, '/' );
- $pos = $pos ? $pos : strlen($arrpath);
- $curpath = substr($arrpath, 0, $pos);
- $next = substr($arrpath, $pos);
- if(preg_match("/\\[(\\d+)\\]$/",$curpath,$predicate))
- {
- $curpath = substr($curpath, 0, strpos($curpath,"[{$predicate[1]}]"));
- $result = $arr[$curpath][$predicate[1]];
- }else $result = $arr[$curpath];
- if( is_array($arr) && !array_key_exists($curpath, $arr) )
- {
- die( 'key is not exists:' . $curpath );
- }
- return $self($result, $next);
- }
- // 如果输入的数组是全数字键,则将元素值依次传输到 $callback, 否则将自身传输给$callback
- function xml_array_each( $arr, $callback )
- {
- if(func_num_args()<2) die('parameters error');
- if(!is_array($arr)) die('parameter 1 shuld be an array!');
- if(!is_callable($callback)) die('parameter 2 shuld be an function!');
- $keys = array_keys($arr);
- $isok = true;
- foreach( $keys as $key ) {if(!is_int($key)) {$isok = false; break;}}
- if($isok)
- foreach( $arr as $val ) $result[] = $callback($val);
- else
- $result[] = $callback( $arr );
- return $result;
- }
- /**
- * 最简单的XML转数组
- * @param string $xmlstring XML字符串
- * @return array XML数组
- */
- function simplest_xml_to_array($xmlstring) {
- return json_decode(json_encode((array) simplexml_load_string($xmlstring)), true);
- }
PHP XML To Array将XML转换为数组的更多相关文章
- 将xml转为array 输出xml字符
//将xml转为array private function fromXml($xml){ // 禁止引用外部xml实体 libxml_disable_entity_loader(true); ret ...
- 一个简单xml数据转换为数组的方法
本人用easywechat做微信回复图文,从数据库中拿到的数据直接是xml拼好的数据,但是框架只有自带的获取xml格式的语句,所有需要将xml数据中所需要的数据拿出来用来拼接. 搜了好多资料说的都很麻 ...
- php xml转数组,数组转xml,array转xml,xml转array
//数组转XML function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key=>$val) ...
- 微信开发所需要的的方法(签名认证、数组转字符串方法、将xml字符串转换为数组、发送xml请求方法)
//将xml字符串转换为数组 public function xmlToArray($xml){ $array_data = json_decode(json_encode(simplexml_loa ...
- PHP将XML数据转换为数组
<?php $s=join(,file('httpapi.elong.comxmlv2.0hotelcn0132701501.xml')); $result = xml_to_array($s) ...
- php xml格式对象 返回->对应格式数组
/* * $objXml xml格式对象 * 返回 : 对应格式数组 */ public function XmlString2Arr($xml) { ...
- PHP:微信小程序调用【统一下单】【微信支付】【支付回调】API;XML转Array,Array转XML方法(通用)
1.微信公众号.微信小程序开发过程中,第三方服务器与微信服务器数据交互,需要进行数据转换,必须用到这两个函数: 分别是xml_to_array.array_to_xml ; /** * 输出xml字符 ...
- php xml转array的方法
php xml转array的方法 <pre><?php $responseXml='<xml><appid>12</appid></xml& ...
- xml格式的数据转化成数组
将得到的xml格式的数据转化成数组 <?php //构造xml $url = "http://api.map.baidu.com/telematics/v3/weather?locat ...
随机推荐
- ZBrush中标准笔刷介绍
ZBrush最实用.精彩的部分便是雕刻了,笔刷又有时雕刻时必不可少的工具,ZBrush中给我们提供了很多种笔刷,那么,最基础.最常用的笔刷是什么呢,本文内容向大家介绍ZBrush®中标准笔刷以便大家熟 ...
- 安装idea
1.下载idea https://www.jetbrains.com/idea/download/#section=linux 2.解压 sudo tar -zxvf ideaIC-2018.3.2 ...
- Lapack下载安装
安装 1.下载压缩文件 wget http://www.netlib.org/lapack/lapack-3.8.0.tar.gz 2.解压缩 tar -zxvf lapack-3.8.0.tar.g ...
- 小学生都能学会的python(生成器)
小学生都能学会的python(生成器) 1. 生成器 生成器的本质就是迭代器. 生成器由生成器函数来创建或者通过生成器表达式来创建 # def func(): # lst = [] # for i i ...
- git与github的连接流程
https://blog.csdn.net/sssssuuuuu666/article/details/78565381 https://www.cnblogs.com/wzd5230/p/49064 ...
- React 中的 AJAX 请求:获取数据的方法
React 中的 AJAX 请求:获取数据的方法 React 只是使用 props 和 state 两处的数据进行组件渲染. 因此,想要使用来自服务端的数据,必须将数据放入组件的 props 或 st ...
- C#-C#6.0新特性
来自为知笔记(Wiz)
- AJAX核心--XMLHttpRequest五步法
引言: AJAX=异步Javascript + XML,AJAX是一种用于创建高速动态网页的技术. 开门见山: 解读:AJAX使用XHTML和CSS为网页表示.DOM动态显示和交互,XML进行数据交换 ...
- HDU 5187 zhx's contest(防爆__int64 )
Problem Description As one of the most powerful brushes, zhx is required to give his juniors n probl ...
- USACO runaround
/* ID:kevin_s1 PROG:runround LANG:C++ */ #include <iostream> #include <cstdio> #include ...