2010-12-15 21 views
7

Mam pewne referencje h3 w DOMDocument PHP.Czy mogę uzyskać rodzeństwo z DOMDocument PHP?

$dom = new DOMDocument(); 

$dom->loadHtml($content); 

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

foreach($h3s as $h3) { 

    var_dump($h3->nodeValue); 

} 

Potrzebuję uzyskać następne elementy po h3 s. W tym przypadku będą to wszystkie elementy do następnego h3 lub końca dokumentu.

Łatwo działało z wyrażeniem regularnym, ale nie chcę używać tutaj do parsowania HTML.

Dla porównania, że ​​wyrażenie regularne jest ...

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

(Który jest krucha, stąd dążenie do prawidłowego parsowania).

Jak mogę uzyskać za pomocą DOMDOcument dane, których spodziewam się w $matches z powyższego wyrażenia regularnego?

Sprawdziłem numer documentation, ale nie mogłem znaleźć odpowiednika właściwości JavaScript nextSibling.

Odpowiedz

14

$h3->nextSibling i $h3->previousSibling jest tym, czego szukasz.

getElementsByTagName zwraca DOMNodeList, który zawiera elementy DOMNode podczas iteracji nad nim.

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

+2

+1 Ważne jest, aby sprawdzić, co dana klasa klasa rozciąga się w podręczniku PHP. – netcoder