我想解析HTML页面以从表中获取数据(基本上我想遍历所有tr
标签)。
我有下一个问题:
tr
?onclick
代码的td
属性值?td
tr
醇>
HTML结构:
<tr>
<td onclick="window.location='home.php?navi=148';">kkkk</td>
<td>demo</td>
<td>kkkk</td>
</tr>
我想获得 window.location =&#39; home.php?navi = 148&#39;; 我正在使用的代码:
$url = $html;
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$html = curl_exec($ch);
curl_close($ch);
$dom = new DOMDocument();
@$dom->loadHTML($html);
# Iterate over all the <a> tags
foreach($dom->getElementsByTagName('td') as $link) {
# Show the <a href>
print_r($link);
echo "<br />";
}
答案 0 :(得分:0)
您是否尝试获取节点值?
foreach($dom->getElementsByTagName('td') as $link) {
# Show the <a href>
echo $link->nodeValue; //td value inside
echo "<br />";
}
答案 1 :(得分:0)
您已经在使用DOM扩展,但是您错过了DOMXPath。它允许您使用XPath表达式来获取文档的一部分。它可以返回节点列表或标量。
$xpath = new DOMXPath($dom);
$result = $xpath->evaluate($expression, $optionalContext);
这是可能的,但大多数情况下更容易进行正匹配(tbody中的所有tr)。想一想tfoot里面的tr。
tbody中的所有内容://table/tbody/tr
所有tr直接在表格中://table/tr
父母不是thead //table//tr[name(parent::*) != 'thead']
这是标量值 - 因此您需要将其强制转换为字符串:
string(//table/tbody/tr/td/@onclick)
这将需要一个组合,首先获取tr,然后使用tr作为上下文计数:
foreach ($xpath->evaluate('//table/tbody/tr') as $tr) {
var_dump($xpath->evaluate('count(td)', $tr);
}
答案 2 :(得分:-1)
而不是使用php为什么不使用javascript来实现你想要的......
执行此操作的代码如下:
$('#tableId tr').each(function(){
defaultData[i] = new Array();
j = 0;
$(this).find('td').each(function(){
defaultData[i][j] = $(this).html();
if (defaultData[i][j].length > 150)
{
defaultData[i][j] = $(this).find('select').val();
}
j++;
});
i++;
});