php - 如何从html页面获取文本链接?

标签 php html file-get-contents

<分区>

我想从这个网页获取链接“http://www.w3schools.com/default.asp”和“http://www.google.com”。我想要<a>的链接。里面的标签 <div class="link"> ,还有很多其他<a>此页面中的标签,我不想要它们。我怎样才能只检索特定的链接?谁能帮帮我?

<div class="link">
<a href="http://www.w3schools.com/default.asp">
<h4>W3 Schools</h4>
</a>
</div>
<div class="link">
<a href="http://www.google.com">
<h4>Google</h4>
</a>
</div>

最佳答案

使用 DOM 解析器,例如 DOMDocument实现这一目标:

$dom = new DOMDocument;
$dom->loadHTML($html); // $html is a string containing the HTML

foreach ($dom->getElementsByTagName('a') as $link) {
    echo $link->getAttribute('href').'<br/>';
}

输出:

http://www.w3schools.com/default.asp
http://www.google.com

Demo.


更新:如果您只想要特定 <div> 内的链接, 你可以使用 XPath表达式来查找 div 内的链接,然后遍历它们以获取 href属性:

$dom = new DOMDocument;
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);
$links_inside_div = $xpath->query("//*[contains(@class, 'link')]/a");

foreach ($links_inside_div as $link) {
    echo $link->getAttribute('href').'<br/>';
}

Demo.

关于php - 如何从html页面获取文本链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20680351/

相关文章:

php - file_get_contents 无法打开流 : HTTP request failed! HTTP/1.1 500 内部服务器错误

PHP 500 内部服务器错误 file_get_contents

javascript - 如何知道 AJAX 函数正在请求哪个 URL?

php - 将 div 保存为照片?

javascript - 更改 AJAX 加载内容的元素

html - 展望负表 margin

php - Apache/PHP 中 session 文件的位置

javascript - 在ajax中使用函数外部的变量

javascript - 如何创建一个滚动后固定在顶部的粘性导航栏

php - file_get_contents 不适用于某些网址