热搜:NVER node 开发 php

问一个关于xml转php 数组的问题

2024-09-22 13:40:01
问一个关于xml转php 数组的问题

xml php

我现在要接收一个xml的内容,不是文件
接收的文件内容如下格式

?<?xml version="1.0" encoding="utf-8"?>0000ax000011122233344212345测试402100002885328320130828备注1备注2备注3


怎么直接把这段代码转换为php数组,这个不是个文件,是个变量


回复讨论(解决方案)

在线等,希望能有人速度帮忙解决了

找一个xml_to_array的函数 比如 

http://www.cnblogs.com/heiing/archive/2009/12/31/1637015.html

然后使用它

	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]];}$xml = '<?xml version="1.0" encoding="utf-8"?>0000ax000011122233344212345测试402100002885328320130828备注1备注2备注3';var_export(xmltoarray($xml));


结果
array (  'ax' => '0000',  'at' => 'ax0000111222333442',  'ab' => '12345',  'an' => '测试',  'ao' => '4021000028853283',  'ad' => '20130828',  'pMemo1' => '备注1',  'pMemo2' => '备注2',  'pMemo3' => '备注3',)


据此博主说他这个函数还不够完善,请慎用

谢谢了,解决!