Как удалить все дочерние элементы элемента body с помощью DOMDocument? - PullRequest
5 голосов
/ 10 февраля 2011

Я пытаюсь удалить всех 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();

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

1 Ответ

7 голосов
/ 10 февраля 2011

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

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

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

...