使用简单的 dom 查找 href 链接
题
我是 简单的phpdom 使用来获得 a
href 将值与此代码链接:
$html = file_get_html($url);
foreach($html->find('a') as $element) $array[] = $element->href . '<br>';
现在的问题是,如果链接以斜杠 (/) 开头,则链接将无效!
我怎样才能有有效的链接?
例如,链接是这样的:
<a href="/news45454.html">Test link</a>
如果我使用 phpsimpledom 代码,我将有:
/news45454.html
但是,我想要:
http://example.com/news45454.html
如何得到这个?
我们可以测试一下,如果链接以斜杠开头,然后向其中添加站点 url 吗?!如何 ?
解决方案
基本上,您需要测试 HREF 元素是否是有效的完整 URL。如果验证通过,您可以继续将其添加到数组中。但是,如果验证失败,您需要连接基本名称(应该是网站的域名)。
$html = file_get_html($url);
foreach($html->find('a') as $element) {
if(filter_var($url, FILTER_VALIDATE_URL)) {
// Valid URL, add to array.
$array[] = $element->href . '<br>';
} else {
// URL is invalid, add basename.
$array[] = basename($url) . $element->href . '<br>';
}
}
对于其他情况(例如 <a href="#">
)但它应该适用于您概述的情况。
其他提示
不隶属于 StackOverflow