2017-04-24 169 views
0

PHP DOM遍历HTML节点我发布了一个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(如“12345”)。对于一个目标的超级链接标签"_top"

我当前的代码选择表中的所有超链接标签。

foreach ($dom->getElementsByTagName('td') as $node) { 
    foreach ($node->getElementsByTagName('a') as $node){ 
     $array_href[]= $node->getAttribute('href'); 
    } 
$array_data[] = $node->nodeValue; 
} 

回答

0

target只是另一个属性,如href。获得的价值和比较:

foreach ($node->getElementsByTagName('a') as $node){ 
    if ($node->getAttribute('target') === '_top') { 
     $array_href[]= $node->getAttribute('href'); 
    } 
} 
+0

这是辉煌!谢谢马特 – Jeanclaude

0

虽然循环通过a标签,创建一个新的if来检查,如果该节点包含的_new值的属性target,即:

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