2011-02-10 5 views
5

Sto tentando di rimuovere tutti i bambini body con DOMDocument.Come posso rimuovere tutti gli elementi figlio dell'elemento body 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(); 

Non sono sicuro di quello che sto facendo male ... per favore dimmelo.

risposta

7

Bene, il problema è che si sta aggiornando l'iteratore $bodyChildren (non è un array, è un oggetto DomNodeList) mentre lo si scorre sopra. Invece, provare a fare questo:

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

Sembra un po 'indietro, ma dovrebbe funzionare per le vostre esigenze ...

+0

Il codice rimosso tutti gli elementi figlio. Grazie! – alex

Problemi correlati