2017-10-21 127 views
1

Je travaille avec php et je suis en train d'obtenir certaines données à partir d'une page Webphp DOMDocument obtenir des informations de noeud

tout fonctionne jusqu'à ce que je reçois à cette partie:

<a class="cleanthis" href="https://www.web.com" id="1122" rel="#1122" style="display: inline-block;"><strong>the data i want</strong></a> 

Comme vous pouvez le voir je veux les données en forte mais je ne peux pas l'obtenir. Je ne reçois que des lignes vides

Code i utilise:

foreach($as as $a) { 
     if ($a->getAttribute('class') === 'cleanthis') { 


$strong = $a->getElementsByTagName('strong'); 
echo $strong->nodeValue;; 

} 
+0

Peut-être est une faute de frappe de la simplification, mais la classe est 'cleanthis' et vous cherchez' hoverinfo_trigger' – ishegg

+0

Je l'ai fait une typo, désolé –

+0

Je voudrais utiliser le style pour rendre le texte fort .. pas en faveur des styles mélangés avec le balisage. alors vous pouvez sélectionner l'élément par ID par exemple .. – rmjoia

Répondre

0

Vous devriez voir ce message d'erreur:

Undefined property: DOMNodeList :: $ nodeValue

C'est parce que $strong = $a->getElementsByTagName('strong'); mettra un DOMNodeList dans $string. Vous devez soit parcourir la liste, soit récupérer le nœud réel, par exemple.

echo $strong->item(0)->nodeValue; 

Ou vous pouvez simplement utiliser XPath:

$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$xpath = new DOMXPath($dom); 
foreach ($xpath->evaluate('//a[@class="cleanthis"]/strong/text()') as $element) { 
    echo $element->nodeValue, PHP_EOL; 
} 
+0

Je dois utiliser le moyen de domdocument et cela n'a toujours pas fonctionné –

+0

@AlbinGjoka fonctionne pour moi https://eval.in/883938 – Gordon