Ну, проблема в том, что вы обновляете итератор $bodyChildren
(это не массив, а объект DomNodeList
), когда вы зацикливаетесь на нем. Вместо этого попробуйте сделать это:
while ($bodyChildren->length > 0) {
$body->removeChild($bodyChildren->item(0));
}
Кажется, немного в обратном направлении, но это должно работать для ваших нужд ...