2010-04-24 8 views
0

J'analyse un document HTML en utilisant DOMDocument classe en PHP, je voulais obtenir le nodeValue d'un élément div, mais il me donne nulle,Impossible d'obtenir nodeValue en utilisant la classe DOMDocument en PHP

<div id="summary"> 
    Hi, my name is <span>ABC</span> 
    <br/> 
    address is here at stackoverflow... 
    <span>.... 
    .... 
</div> 

veulent pour obtenir la valeur à l'intérieur de la div, et le code que j'ai écrit était

$div_node=$dom->getElementById("summary"); 
$node_value=$div_node->nodeValue; 

mais il me donne une valeur nulle.

Répondre

0

La classe DOMDocument nécessite un code HTML valide, votre balise div n'est pas fermée. Quand il renvoie null cela signifie qu'il ne peut pas trouver l'élément.

2

L'identifiant n'est pas enregistré dans le document et ne peut donc pas être interrogé. Une option est de passer par le HTML en déclarant explicitement quel attribut de chaque élément est son id, une autre option est d'analyser le document par rapport à une DTD et une troisième est d'essayer d'utiliser getElementById et d'utiliser XPath à la place.

Pour cette dernière que vous utilisez quelque chose comme (le point clé étant la requête XPath):

$xpath  = new DOMXPath($dom); 
$summaries = $xpath->query('//div[@id="summary"]'); 
$summary = 'unknown'; 
if ($summaries->length > 0) { 
    $summary = $summaries->item(0)->nodeValue; 
} 
Questions connexes