html - php怎么获取页面上的超链接并补齐成全地址?
程序员文章站
2024-01-22 10:40:58
...
curl获取一个网站解析其中的a标签会得到链接,有的会是http:// 这样完整的,有的会是/about,../about相对的,有的是#,javascript之类的,怎么将匹配的链接全部补齐为完整链接(域名加相对的),锚点和js的排除掉?
回复内容:
curl获取一个网站解析其中的a标签会得到链接,有的会是http:// 这样完整的,有的会是/about,../about相对的,有的是#,javascript之类的,怎么将匹配的链接全部补齐为完整链接(域名加相对的),锚点和js的排除掉?
自己写个方法计算就行了。例如请求 http://example.com/qa/list.php, 其中主机地址是 http://example.com, 目录地址是 http://example.com/qa/
如果地址是 http(s)://开头,完整地址
如果地址是/开头, 如 /aboutus,完整地址是主机地址+该地址,即 http://example.com/aboutus
如果地址是其它开头,如 ../aboutus, 完整地址是目录地址+该地址,即 http://example.com/qa/../aboutus
如果你觉得../很碍眼,可以自己整理一下,每个../抵消一级父目录,变成 http://example.com/aboutus
/**
* 返回当前请求的完整URL
*
* @return string
*/
function current_url()
{
$host = $_SERVER['HTTP_HOST'];
$uri = $_SERVER['REQUEST_URI'];
return (is_https() ? 'https://' : 'http://') . $host . $uri;
}
好吧,看错题目了。。。
关于处理相对路径的问题可以参考我之前写过的一篇文章:http://blog.icewingcc.com/php-conv-addr-re-ab-2.html