quinta-feira, 12 de março de 2020

XML to Array PHP

Contribuição de Ricardo Feitosa (Transforma um XML para array)


function xml2array($xml)
{
$xmlary = array();
$reels = '/<(\w+)\s*([^\/>]*)\s*(?:\/>|>(.*)<\/\s*\\1\s*>)/s';
$reattrs = '/(\w+)=(?:"|\')([^"\']*)(:?"|\')/';
preg_match_all($reels, $xml, $elements);
if (is_array($elements))
{
foreach ($elements[1] as $ie => $xx)
{
$cdend = strpos($elements[3][$ie], "<");
if ($cdend > 0)
{
$xmlary[$elements[1][$ie]] = substr($elements[3][$ie], 0, $cdend - 1);
}
if (preg_match($reels, $elements[3][$ie]))
$xmlary[$elements[1][$ie]] = xml2array($elements[3][$ie]);
else
if ($elements[3][$ie])
{
$xmlary[$elements[1][$ie]] = $elements[3][$ie];
}
}
return $xmlary;
}
return $xml;
}

function xml2get($id,$xml)
{
$parametros = xml2array($xml);
$resultado = "";
foreach ($parametros[$id] as $key => $value)
$resultado.= "$key=".urlencode($value)."&";
if (substr($resultado,-1) == "&")
return substr($resultado,0,-1);
return false;
}

Nenhum comentário: