curl获取一个网站解析其中的a标签会得到链接,有的会是http:// 这样完整的,有的会是/about,../about相对的,有的是#,javascript之类的,怎么将匹配的链接全部补齐为完整链接(域名加相对的),锚点和js的排除掉?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
自己写个方法计算就行了。例如请求 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
自己写个方法计算就行了。例如请求 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
好吧,看错题目了。。。
关于处理相对路径的问题可以参考我之前写过的一篇文章:http://blog.icewingcc.com/php-conv-addr-re-ab-2.html