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