Как получить Якорный текст, используя DomDocument? - PullRequest
6 голосов
/ 07 января 2011

Скажите, у меня есть этот 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 ]

6 голосов
/ 07 января 2011
foreach ($urls as $url) {
    $attributes = $url->attributes;
    echo "<br>$url->nodeValue is $attributes->href";
} 
5 голосов
/ 07 января 2011

Использование DOMNode::$nodeValue:

echo $url->nodeValue;
0 голосов
/ 28 декабря 2013
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';   
}
0 голосов
/ 07 января 2011

Текст «Test» на самом деле является текстовым узлом DOM, поэтому вы можете извлечь содержимое, пройдя через дочерние узлы $ url.

Вы можете проверить это сообщение для решения: Как получить innerHTML из DOMNode?

...