2011-01-07 47 views
6

說我有這個網站:如何使用DomDocument獲取錨文本?

<a href="http://example.com">Test</a> 

我使用DOM文檔使用此代碼解析它:

$dom = new DomDocument(); 
@$dom->loadHTML($html); 
$urls = $dom->getElementsByTagName('a'); 

然後我運行此代碼:

foreach ($urls as $url) 
{ 
    //echo "<br> {$url->getAttribute('href')} , {$url->getAttribute('title')}"; 
    foreach ($url->attributes as $a) 
    { 
     echo "<br>$a->name is $a->value"; 
    } 
    echo "<hr><br>"; 
} 

當我這樣做,我只看到'href'作爲url的一個屬性,沒有辦法獲得'錨文本'(在上面的例子中是'Test')。我怎樣才能得到鏈接的錨文本?

回答

5
foreach ($urls as $url) { 
    $attributes = $url->attributes; 
    echo "<br>$url->nodeValue is $attributes->href"; 
} 
+0

我有一個圖片標籤作爲鏈接的錨文本。如果我使用nodeValue它不會返回任何東西。我使用find('a [href = url]')來獲得匹配的錨鏈接。我如何獲得圖像標籤? – peter 2011-07-04 07:42:10

0

文本「測試」實際上是一個DOM文本節點,以便您可以通過$網址的子節點去獲取內容。

您可以檢查此職位的解決方案:How to get innerHTML of DOMNode?

+0

這實際上意味着獲得的innerHTML,你可能要使用的nodeValue如果你想要的是裏面的文字作爲@lonesomeday指出。 – 2011-01-07 18:49:29

0
here is two line code may it help some one 

$html = file_get_html($link); 
foreach($html->find("a") as $key=>$val) 
{ 
    echo $val->src; 
    echo '\n'; 
}