很有用的PHP XML to Array函数

来源:互联网 发布:淘宝客靠谱吗 编辑:程序博客网 时间:2024/06/08 14:52

PHP: XML to Array

A simple post for today. A HUGE thanks to @gaarf for his post! :)

<?/** * convert xml string to php array - useful to get a serializable value * * @param string $xmlstr * @return array * @author Adrien aka Gaarf */function xmlstr_to_array($xmlstr) {  $doc = new DOMDocument();  $doc->loadXML($xmlstr);  return domnode_to_array($doc->documentElement);}function domnode_to_array($node) {  $output = array();  switch ($node->nodeType) {   case XML_CDATA_SECTION_NODE:   case XML_TEXT_NODE:    $output = trim($node->textContent);   break;   case XML_ELEMENT_NODE:    for ($i=0, $m=$node->childNodes->length; $i<$m; $i++) {     $child = $node->childNodes->item($i);     $v = domnode_to_array($child);     if(isset($child->tagName)) {       $t = $child->tagName;       if(!isset($output[$t])) {        $output[$t] = array();       }       $output[$t][] = $v;     }     elseif($v) {      $output = (string) $v;     }    }    if(is_array($output)) {     if($node->attributes->length) {      $a = array();      foreach($node->attributes as $attrName => $attrNode) {       $a[$attrName] = (string) $attrNode->value;      }      $output['@attributes'] = $a;     }     foreach ($output as $t => $v) {      if(is_array($v) && count($v)==1 && $t!='@attributes') {       $output[$t] = $v[0];      }     }    }   break;  }  return $output;}?>
0 0