Скажем, у меня есть этот 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»). Как я могу получить якорный текст ссылки?
foreach ($urls as $url) { $attributes = $url->attributes; echo "<br>$url->nodeValue is $attributes->href"; }
Использовать DOMNode::$nodeValue
:
echo $url->nodeValue;
Текст «Тест» на самом деле является узлом DOM Text, поэтому вы можете получить контент, пройдя через дочерние узлы в $ url.
Вы можете проверить это сообщение для решения: как получить innerHTML DOMNode?
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'; }