2011-01-07 18 views
6

Bu html'ye sahip olduğumu varsayalım:DomDocument kullanarak Anchor metni nasıl edinilir?

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

Bu kodla dom belgesini kullanarak ayrıştırıyorum:

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

Ve sonra şu kodu çalıştırıyorum:

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

Bunu yaptığımda, Ben sadece 'href'i' bir URL niteliği olarak görüyorum, 'çapa metni' almanın bir yolu yok (yukarıdaki durumda 'Test'). Bağlantının çapa metnini nasıl alabilirim?

cevap

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

Bir bağlantının bağlantı metni olarak bir resim etiketim var. nodeValue kullanırsam hiçbir şey döndürmez. Eşleşen çapa bağlantısını bulmak için find ('a [href = url]') kullanıyorum. Resim etiketini nasıl alabilirim? – peter

+0

textContent hiçbir şey döndürmez. something gibi bir şey döndürmeli, ancak – peter

+0

iç metin hile yapmamıştır. Şimdi görüntü etiketini iyi döndürür. teşekkürler dqhendricks – peter

0

metin "Test" bir DOM Metin düğümü aslında.

Sen çözüm için Bu yayını kontrol edebilirsiniz: @lonesomeday işaret gibi istediğiniz tüm metin içinde olup olmadığını Bu aslında innerHTML elde etmek içindir How to get innerHTML of DOMNode?

+0

, sen NodeValue kullanmak isteyebilirsiniz . –

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'; 
} 
İlgili konular