2011-02-10 282 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