Convert XML to an array in PHP

  • 2020-03-31 20:17:50
  • OfStack


//Xml to an array, including the root key
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; 
} 
//Xml to array, not including the root key
function xmltoarray( $xml ) 
{ 
$arr = xml_to_array($xml); 
$key = array_keys($arr); 
return $arr[$key[0]]; 
} 

Related articles: