微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用PHP Simple HTML DOM Parser查找表格单元格并获取下一个兄弟的内容

我正在尝试使用PHP Simple HTML DOM Parser来获取外部文件的HTML.该文件包含一个表,目标是找到具有特定数据内容的能力单元格,然后获取一个兄弟单元格的数据.这些数据需要放在PHP变量中.

基于How to parse and process HTML/XML with PHP?,Grabbing the href attribute of an A element,Scraping Data: PHP Simple HTML DOM Parser以及PHP Simple HTML DOM Parser Manual文章中的研究和信息,我已经能够产生一些结果,但我担心我可能走错了路.

表格行如下所示:

<tr>
<td>fluff</td>  
<td>irrelevant</td> 
<td>etc</td>   
<td><a href="one">Hello world</a></td>                        
<td>123.456</td> 
<td>fluff</td>          
<td>irrelevant</td>   
<td>etc</td>
</tr>

我想要完成的是找到包含“Hello world”的表格单元格,然后从下一个td单元格中获取数字.下面的代码找到了表格单元格并回显了它的内容,但我尝试将它用作地标以获取一个单元格的数据失败了……

$html = file_get_html("http://site.com/stuff.htm");
$e = $html->find('td',0)->innertext = 'Hello world';
echo $e;

所以最终,在上面的例子中,123.456的值需要以某种方式进入PHP变量.

谢谢你的帮助!

解决方法:

它可以使用DOMXPath类完成.您不需要外部库.

这是一个例子:

<?PHP

$html = <<<EOF
<tr>
<td>fluff</td>  
<td>irrelevant</td> 
<td>etc</td>   
<td><a href="one">Hello world</a></td>                        
<td>123.456</td> 
<td>fluff</td>          
<td>irrelevant</td>   
<td>etc</td>
</tr>
EOF;


// create empty document 
$document = new DOMDocument();

// load html
$document->loadHTML($html);

// create xpath selector
$selector = new DOMXPath($document);

// selects the parent node of <a> nodes
// which's content is 'Hello world'
$results = $selector->query('//td/a[text()="Hello world"]/..');

// output the results 
foreach($results as $node) {
    echo $node->nodeValue . PHP_EOL;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐