2011-02-10 10 views
5

Estoy tratando de eliminar todos los body niños con DOMDocument.¿Cómo puedo eliminar todos los elementos secundarios del elemento del cuerpo con 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(); 

No estoy seguro de lo que estoy haciendo mal ... por favor dígame.

Respuesta

7

Bueno, el problema es que estás actualizando el iterador $bodyChildren (no es una matriz, es un objeto DomNodeList) mientras lo estás recorriendo. En su lugar, trate de hacer esto:

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

parece un poco hacia atrás, pero debe trabajar para sus necesidades ...

+0

Su código elimina todos los elementos secundarios. ¡Gracias! – alex

Cuestiones relacionadas