如何使用DomDocument获取锚文本?

时间:2011-01-07 18:44:51

标签: php domdocument

说我有这个HTML:

<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'中)。如何获取链接的锚文本?

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

使用DOMNode::$nodeValue

echo $url->nodeValue;

答案 2 :(得分:0)

文本“Test”实际上是一个DOM Text节点,因此您可以通过遍历$ url的子节点来获取内容。

您可以查看此帖子以获取解决方案:How to get innerHTML of DOMNode?

答案 3 :(得分: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';   
}