2011-02-10 15 views
5

Próbuję usunąć wszystkie dzieci body za pomocą DOMDocument.Jak usunąć wszystkie elementy potomne elementu body za pomocą DOMDocument?

$dom = new DomDocument(); 

$dom->loadHTML($buffer); 
$dom->preserveWhiteSpace = FALSE; 

$body = $dom->getElementsByTagName('body')->item(0); 

$bodyChilden = $body->childNodes; // NULL, so invalid argument for foreach 

foreach($bodyChildren as $child) { 
    $child->parentNode->removeChild($child); 
} 

echo $dom->saveHTML(); 

Nie jestem pewien, co robię źle ... proszę powiedz mi.

Odpowiedz

7

Problem polega na tym, że aktualizujesz iterator $bodyChildren (nie jest to tablica, to obiekt DomNodeList), gdy przeglądasz go. Zamiast tego, spróbuj to zrobić:

while ($bodyChildren->length > 0) { 
    $body->removeChild($bodyChildren->item(0)); 
} 

Wydaje się trochę do tyłu, ale to powinno działać dla swoich potrzeb ...

+0

Twój kod usuwa wszystkie elementy podrzędne. Dzięki! – alex