2011-02-10 281 views
5

我正在尝试删除所有带有DOMDocument的body子项。如何使用DOMDocument删除body元素的所有子元素?

$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 2011-02-10 01:54:01