我发布了一个SO问题: PHP DOM traverse HTML nodes and childnode
有人给了我一个解决方案。 但是,我解析的数据实际上有几个超链接标记,如下所示:
<tr>
<td>DATA 1</td>
<td><a href="12345" target="_top">DATA 2</a></td>
<td><a href="other_link">DATA 3</a></td>
</tr>
我想要的输出是仅选择href
(例如&#39; 12345&#39;)作为目标为"_top"
的超链接标记。
我当前的代码选择表格中的所有超链接标记。
foreach ($dom->getElementsByTagName('td') as $node) {
foreach ($node->getElementsByTagName('a') as $node){
$array_href[]= $node->getAttribute('href');
}
$array_data[] = $node->nodeValue;
}
答案 0 :(得分:0)
target
只是另一个属性,例如href
。获取价值并进行比较:
foreach ($node->getElementsByTagName('a') as $node){
if ($node->getAttribute('target') === '_top') {
$array_href[]= $node->getAttribute('href');
}
}
答案 1 :(得分:0)
在循环遍历a
代码时,创建一个新的if
,检查该节点是否包含值为target
的属性_new
,即:
foreach ($dom->getElementsByTagName('td') as $node) {
foreach ($node->getElementsByTagName('a') as $node){
if ($node->getAttribute('target') == '_top') {
$array_href[] = $node->getAttribute('href');
}
}
$array_data[] = $node->nodeValue;
}