Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Преобразование XML в массив
Для преобразования XML в массив можно использовать следующую функцию:
function xml_to_array($XML)
{
$XML = trim($XML);
$returnVal = $XML;
// Expand empty tags
$emptyTag = '<(.*)/>';
$fullTag = '<\\1></\\1>';
$XML = preg_replace ("|$emptyTag|", $fullTag, $XML);
$matches = [];
if (preg_match_all('|<(.*)>(.*)</\\1>|Ums', trim($XML), $matches))
{
// Если есть элементы, тогда вернуть массив, иначе текст
if (count($matches[1]) > 0) $returnVal = [];
foreach ($matches[1] as $index => $outerXML)
{
$attribute = $outerXML;
$value = xml_to_array($matches[2][$index]);
if (! isset($returnVal[$attribute])) $returnVal[$attribute] = [];
$returnVal[$attribute][] = $value;
}
}
// Bring un-indexed singular arrays to a non-array value.
if (is_array($returnVal)) foreach ($returnVal as $key => $value)
{
if (is_array($value) && count($value) == 1 && key($value) === 0)
{
$returnVal[$key] = $returnVal[$key][0];
}
}
return $returnVal;
}
.
Прокомментировать/Отблагодарить