PHP DOM遍历HTML节点以获取超链接标记

时间:2017-04-24 13:06:47

标签: php parsing dom html-parsing domdocument

我发布了一个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;
}

2 个答案:

答案 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;
}