[英]How can I use “PHP Simple HTML DOM Parser” to get the contents of an <h1></h1> tag?
[英]Use PHP Simple HTML DOM Parser to find table cell and get contents of next sibling
我正在尝试使用PHP Simple HTML DOM Parser来获取外部文件的HTML。 该文件包含一个表,目标是找到具有特定数据内容的能力单元格,然后获取下一个兄弟单元格的数据。 这些数据需要放在PHP变量中。
基于如何使用PHP解析和处理HTML / XML等文章中的研究和信息? , 抓取 A元素的href属性 , 刮擦数据:PHP简单的HTML DOM解析器 ,当然还有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;
}
使用简单的html dom解析器:
$str = "<table><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></table>";
$html = str_get_html($str);
$tds = $html->find('table',0)->find('td');
$num = null;
foreach($tds as $td){
if($td->plaintext == 'Hello world'){
$next_td = $td->next_sibling();
$num = $next_td->plaintext ;
break;
}
}
echo($num);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.