Обработка 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/

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");
 

Как видишь, ни дополнительные переменные вроде массивов, ни регулярные выражения не нужны.

удалять надо с конца тогда все будет нормально