我想从这个网页获取链接“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.