/** *author Zhudongchang *date 2015/6/12 *xml goto Array function * @param string $XMLSTR XML string * @return String*/ functionConvertxmltoarray ($xmlStr){ $patten=<<<EOT/(^\s*< (\s*[a-za-z0-9_= ' ":]+\s*) +>.*<\s*\/(\s*[a-za-z0-9_= '":]+\s*) +>\s*$) | (^\s*< (\s*[a-za-z0-9_= ' ":]+\s*) +\/\s*>$)/sEOT; $pattenChildXml=<<<EOT/^\s*< (\s*[a-za-z0-9_= ' ":]+\s*) +> (. *) <\s*\/(\s*[a-za-z0-9_= '":]+\s*) +>\s*$/seot; $res=array (); $xml= Simplexml_load_string ($xmlStr); foreach ($xml->children () as$val){ $key=$val->getname (); $valXml=$val->asxml (); Preg_match ($pattenChildXml,$valXml,$match); $childXmlStr=$match[2]; $temp=preg_match ($patten,$childXmlStr)? Convertxmltoarray ($valXml):(string)$val; if (Array_key_exists ($key,$res) {Is_array ($res[$key]) or$res[$key]=array ($res[$key]); $res[$key]=array_merge ($res[$key],$temp); }else{$res[$key]=$temp; }} return$res; }
PHP XML goto Array function (original)