2010-12-15 14 views
7

He recibido algunas referencias h3 en DOMDocument de PHP.¿Puedo obtener hermanos con DOMDocument de PHP?

$dom = new DOMDocument(); 

$dom->loadHtml($content); 

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

foreach($h3s as $h3) { 

    var_dump($h3->nodeValue); 

} 

que necesita para obtener los siguientes elementos después los h3 s. En este caso, serán todos los elementos hasta el próximo h3 o al final del documento.

Funcionó fácilmente con una expresión regular, pero no quiero usar una aquí para analizar HTML.

Como referencia, que es una expresión regular ...

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

(¿Qué es frágil, por lo tanto, el deseo para el análisis propiamente dicho).

Entonces, ¿cómo podría obtener el uso de DOMDOcument los datos que espero en $matches de la expresión regular anterior?

Revisé documentation, pero no pude encontrar el equivalente de la propiedad de nextSibling de JavaScript.

Respuesta

14

$h3->nextSibling y $h3->previousSibling es lo que estás buscando.

getElementsByTagName devuelve DOMNodeList, que contiene DOMNode elementos cuando itera sobre él.

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

+2

+1 Es importante comprobar qué clase de una clase dada se extiende en el manual de PHP. – netcoder

Cuestiones relacionadas