Обработка xml (перебор и удаление в цикле)
Подскажите, в чем может быть проблема: требуется в google sitemap удалить узлы по условию, но почему-то при переборе не получается их корректно удалять. Возникает какая-то проблема с индексами. Отдельно от перебора удаляются. Пробовал через simplexml и Dom разными способами.
Код: http://dumpz.org/592858/
Исходник: http://dumpz.org/592860/
На выходе:
dom.xml: http://dumpz.org/592867/
dom_work.xml: http://dumpz.org/592868/
simplexml.php: http://dumpz.org/592874/
simplexml_inner.xml: http://dumpz.org/592876/
Код: http://dumpz.org/592858/
Исходник: http://dumpz.org/592860/
На выходе:
dom.xml: http://dumpz.org/592867/
dom_work.xml: http://dumpz.org/592868/
simplexml.php: http://dumpz.org/592874/
simplexml_inner.xml: http://dumpz.org/592876/
1 ответов
$xml = simplexml_load_file('sitemap.xml');
$url_total = count($xml->url);
for ($i = ($url_total - 1); $i >= 0; --$i) {
if (!strpos($xml->url[$i]->loc, 'forum')) {
continue;
} else {
unset($xml->url[$i]);
}
}
$xml->asXML("simplexml.xml");
Как видишь, ни дополнительные переменные вроде массивов, ни регулярные выражения не нужны.