2010-07-20 3 views
2
начнут извлекать

Я использую этот пример, чтобы получать ссылки с сайта:Xpath PHP ссылки

http://www.merchantos.com/makebeta/php/scraping-links-with-php/

$xpath = new DOMXPath($dom); 
$hrefs = $xpath->evaluate("/html/body//a"); 

for ($i = 0; $i < $hrefs->length; $i++) { 
    $href = $hrefs->item($i); 
    var_dump($href); 
    $url = $href->getAttribute('href'); 
    echo "<br />Link stored: $url"; 
} 

Это хорошо работает; получение всех ссылок; но я не могу получить фактическое «название» ссылки; например, если у меня есть:

<a href="www.google.com">Google</a> 

Я хочу иметь возможность использовать термин «Google».

Я немного потерял и совершенно новый для xpath.

ответ

5

Вы ищете "nodeValue" в TextNode внутри "в" узел. Вы можете получить это значение с

$title = $href->firstChild->nodeValue; 

Полный рабочий пример:

<?php 
$dom = DomDocument::loadHTML("<html><body><a href='www.test.de'>DONE</a></body></html>"); 

$xpath = new DOMXPath($dom); 
$hrefs = $xpath->evaluate("/html/body//a"); 

for ($i = 0; $i < $hrefs->length; $i++) { 
    $href = $hrefs->item($i); 
    $url = $href->getAttribute('href'); 
    $title = $href->firstChild->nodeValue; 
    echo "<br />Link stored: $url $title"; 
} 

Печать:


Ссылка хранится: www.test.de DONE

Смежные вопросы