2010-12-15 50 views
7

J'ai reçu quelques références h3 dans le DOMDocument de PHP.Puis-je avoir des frères et soeurs avec le DOMDocument de PHP?

$dom = new DOMDocument(); 

$dom->loadHtml($content); 

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

foreach($h3s as $h3) { 

    var_dump($h3->nodeValue); 

} 

je besoin pour les prochains éléments après les h3 s. Dans ce cas, il s'agira de tous les éléments jusqu'au prochain h3 ou à la fin du document.

Cela a fonctionné facilement avec une expression régulière, mais je ne veux pas en utiliser une ici pour analyser HTML.

Pour référence, cette expression régulière est ...

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

(qui est fragile, d'où le désir de l'analyse syntaxique correcte).

Alors, comment pourrais-je obtenir en utilisant DOMDOcument les données que j'attends dans $matches de l'expression régulière ci-dessus?

J'ai vérifié le documentation, mais n'a pas pu trouver un équivalent de la propriété nextSibling de JavaScript.

Répondre

14

$h3->nextSibling et $h3->previousSibling est ce que vous cherchez.

getElementsByTagName renvoie DOMNodeList, qui contient les éléments DOMNode lorsque vous effectuez un itérer dessus.

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

+2

+1 Il est important de vérifier quelle classe une classe donnée étend dans le manuel PHP. – netcoder