html - php怎麼擷取頁面上的超連結並補齊成全地址?

來源:互聯網
上載者:User
關鍵字 php html
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

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.