2017-10-21 128 views
1

我与PHP的工作,我想从一个网页PHP DOM文档获取节点信息

一切正常获得某些数据直到我到了这个部分:

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

正如你可以看到,我想数据强劲,但我不能得到它。我只得到空行

代码我使用:

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


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

} 
+0

也许是从简化成为一个错字,但类是'cleanthis'和你正在寻找'hoverinfo_trigger' – ishegg

+0

我做了一个错字,对不起 –

+0

我会使用风格使文本强..不赞成与标记混合的风格。那么你可以通过ID选择元素例如.. – rmjoia

回答

0

你应该看到此错误消息:

未定义的属性:的DOMNodeList :: $的nodeValue

也就是说因为$strong = $a->getElementsByTagName('strong');将在$string中输入DOMNodeList。您需要迭代列表或从中检索实际节点,例如

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

或者你也可以使用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

我必须使用domdocument的方式,但仍然没有工作 –

+0

@AlbinGjoka为我工作https://eval.in/883938 – Gordon