PHP XML To Array将XML转换为数组
2014-06-11 16:46
190 查看
// 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转换为数组
- Php的数组转换成XML(php Array to Xml)
- PHP XML To Array,将XML转换为数组
- php数组转换为对象PHP - Convert Array to Object with stdClass
- PHP实现数组array转换成xml的方法
- PHP实现数组array转换成xml的方法
- php数组转换为对象PHP - Convert Array to Object with stdClass
- php 二维数组转换一维数组 array_column
- php将xml文件转换成数组
- php下将XML转换为数组示例
- php数组转换成xml
- php csv to array (csv 转数组)
- 如何将String类型的数组转换成ArrayList(How to convert a string array to arraylist)
- Insight into DOMDocument - how to convert data from XML to array in PHP
- php xml 转换数组
- php下将XML转换为数组示例
- php最简单把xml转换成数组的方法
- php xml转换数组
- 将XML转换成PHP中的数组
- PHP SOAP client pass array to C# SOAP webservice(PHP SOAP 数组参数传递)