2011-02-10 12 views
5

Я пытаюсь удалить всех body детей с DOMDocument.Как удалить все дочерние элементы элемента body с помощью 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(); 

Я не уверен, что я делаю неправильно ... скажите, пожалуйста.

ответ

7

Ну, проблема в том, что вы обновляете итератор $bodyChildren (это не массив, это объект DomNodeList), поскольку вы зацикливаете на нем. Вместо этого попробуйте сделать это:

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

Это кажется немного назад, но он должен работать для ваших нужд ...

+0

Ваш код удалены все дочерние элементы. Благодаря! – alex

Смежные вопросы