Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov
Преобразование 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;
}