2017-04-24 96 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; 
}