ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
> 之前的xml转换都有些问题,无法很好的处理,新的函数: ## xml转数组 ```php if ( ! function_exists('xmlToArray')) { //将XML转为array function xmlToArray($xml) { // 禁用实体加载 libxml_use_internal_errors(true); // 加载XML字符串为SimpleXMLElement对象 $xmlObject = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); // 清除加载XML时产生的错误 libxml_clear_errors(); // 如果加载失败,返回null if ($xmlObject === false) { return null; } // 将SimpleXMLElement对象转换为JSON字符串,然后解码为PHP数组 $values = json_decode(json_encode($xmlObject), true); return $values; } } ``` ## 数组转xml ```php if ( ! function_exists('arrayToXml')) { //数组转XML function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key => $val) { // 确保标签名是有效的XML名称 $key = preg_replace('/[^a-z0-9_\-]/i', '', $key); // 如果值是数组,递归调用此函数 if (is_array($val)) { $xml .= "<$key>".arrayToXml($val)."</$key>"; } elseif (is_numeric($val)) { // 数字值直接输出 $xml .= "<$key>$val</$key>"; } else { // 其他值使用CDATA标签 $xml .= "<$key><![CDATA[$val]]></$key>"; } } $xml .= "</xml>"; return $xml; } } ```