Heim >Backend-Entwicklung >PHP-Tutorial >html - php怎么获取页面上的超链接并补齐成全地址?

html - php怎么获取页面上的超链接并补齐成全地址?

WBOY
WBOYOriginal
2016-06-06 20:09:461519Durchsuche

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

<code class="php">/**
 * 返回当前请求的完整URL
 *
 * @return string
 */
function current_url()
{
    $host = $_SERVER['HTTP_HOST'];
    $uri = $_SERVER['REQUEST_URI'];

    return (is_https() ? 'https://' : 'http://') . $host . $uri;
}</code>

好吧,看错题目了。。。

关于处理相对路径的问题可以参考我之前写过的一篇文章:http://blog.icewingcc.com/php-conv-addr-re-ab-2.html

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn