2011-01-07 5 views
6

は、私はこのHTMLを持って言う: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>"; 
} 

私はこれを行うと私はURLの属性として 'href'しか表示しないので、 'アンカーテキスト'を得る方法はありません(上記の 'Test'の場合)。リンクのアンカーテキストを取得するにはどうすればよいですか?

答えて

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

私は画像タグをリンクのアンカーテキストとして持っています。私がnodeValueを使うと、何も返されません。私はfind( 'a [href = url]')を使用して、一致するアンカーリンクを取得しています。イメージタグを取得する方法はありますか? – peter

+0

textContentは何も返しません。それはsomethingのようなものを返すはずですが、 – peter

+0

innertextはそのトリックをしませんでした。今すぐ画像タグを返す。ありがとうdqhendricks – peter

3

使用DOMNode::$nodeValue:あなたは$のURLの子ノードを経由してコンテンツを取得することができますので、

echo $url->nodeValue; 
0

テキスト「テスト」は、実際にDOMテキストノードです。

あなたは解決策のために、この記事をチェックすることができます。これは、実際にinnerHTMLプロパティを取得するためのものですHow to get innerHTML of DOMNode?

+0

あなたが望むすべてが@lonesomedayが指摘したように内部のテキストであれば、あなたはのnodeValueを使用する場合があります。 –

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'; 
} 
関連する問題