php数组与xml的相互转化

本文介绍了如何在PHP中实现数组与XML之间的相互转换。包括一个用于将数组转换为XML的函数toXml,以及一个用于从XML字符串创建数组的函数xml_to_array。这些函数能够帮助开发者更高效地处理数据格式转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**
 * 将数组转换成 XML
 *
 * @param array $data             数组
 * @param array $encoding         编码(默认是 UTF-8)
 * @param string $rootNodeName    根节点名称(默认是 data)
 * @param SimpleXMLElement $xml   XML对象(递归用)
 * @return string XML
 */
function toXml($data, $encoding = 'UTF-8', $rootNodeName = 'data', $xml = null)
{
    if ($xml == null) {
        $xml = simplexml_load_string('<?xml version="1.0" encoding="'.$encoding.'"?><'.$rootNodeName.' />');
    }

    foreach($data as $key => $value) {
        if (is_numeric($key)) {
            $key = 'item';
        }
        $key = preg_replace('/\W+/i', '', $key);

        if (is_array($value)) {
            $node = $xml->addChild($key);
            toXml($value, $encoding, $rootNodeName, $node);
        } else {
            //$value = htmlentities($value);
            $xml->addChild($key, $value);
        }
    }
    return $xml->asXML();
}
function xml_to_array($xml){
    $reg = "/<(\w+)[^>]*>([\\x00-\\xFF]*)<\\/\\1>/";
    if(preg_match_all($reg, $xml, $matches)){
        $count = count($matches[0]);
        for($i = 0; $i < $count; $i++){
            $subxml= $matches[2][$i];
            $key = $matches[1][$i];
            if(preg_match( $reg, $subxml )){
                $arr[$key] = xml_to_array( $subxml );
            }else{
                $arr[$key] = $subxml;
            }
        }
    }
    return $arr;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值