2010-12-15 5 views
7

Ho ottenuto alcuni riferimenti h3 nel DOMDocument di PHP.Posso ottenere i fratelli con DOMDocument di PHP?

$dom = new DOMDocument(); 

$dom->loadHtml($content); 

$h3s = $dom->getElementsByTagName('h3'); 

foreach($h3s as $h3) { 

    var_dump($h3->nodeValue); 

} 

ho bisogno di ottenere i prossimi elementi dopo le h3 s. In questo caso, saranno tutti gli elementi fino al prossimo h3 o alla fine del documento.

Ha funzionato facilmente con un'espressione regolare, ma non voglio usarne uno qui per analizzare HTML.

Per avere un riferimento, che l'espressione regolare è ...

preg_match_all('/<h3>([^<]+)<\/h3>(.*?)(<h3|$)/', $content, $matches); 

(che è fragile, da qui il desiderio di una corretta analisi).

Quindi, come potrei ottenere utilizzando DOMDOcument i dati che mi aspetto in $matches dall'espressione regolare di cui sopra?

Ho controllato il documentation, ma non sono riuscito a trovare un equivalente della proprietà nextSibling di JavaScript.

risposta

14

$h3->nextSibling e $h3->previousSibling è quello che stai cercando.

getElementsByTagName restituisce un DOMNodeList, che contiene gli elementi DOMNode quando viene iterato su di esso.

http://www.php.net/manual/en/class.domnode.php

+2

+1 E 'importante controllare quale classe una data classe estende nel manuale di PHP. – netcoder