【问题标题】:PHP DOM traverse HTML nodes for hyperlink tagPHP DOM 遍历 HTML 节点获取超链接标签
【发布时间】:2017-09-21 04:26:42
【问题描述】:

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

我想要的输出是只为目标为"_top" 的超链接标签选择href(例如'12345')。

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

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

【问题讨论】:

    标签: php parsing dom html-parsing domdocument


    【解决方案1】:

    在循环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;
    }
    

    【讨论】:

      【解决方案2】:

      target 只是另一个属性,例如href。获取值并比较:

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

      【讨论】:

      • 太棒了!谢谢马特
      猜你喜欢
      • 2017-09-18
      • 2022-06-23
      • 2020-05-07
      • 1970-01-01
      • 2011-01-31
      • 2014-05-24
      • 1970-01-01
      • 2023-03-17
      • 2018-06-02
      相关资源
      最近更新 更多