我試圖下載一個網頁,例如:曲下載網頁和號錯誤
http://www.site.com/savings/thispage?OneId=88&SecondId=185
捲曲沒有此頁面上;我懷疑由於&符號。我如何轉義這個&符號以允許下載完成?
錯誤是Unable to resolve host
我試圖下載一個網頁,例如:曲下載網頁和號錯誤
http://www.site.com/savings/thispage?OneId=88&SecondId=185
捲曲沒有此頁面上;我懷疑由於&符號。我如何轉義這個&符號以允許下載完成?
錯誤是Unable to resolve host
看看:url_encode();
和rawurlencode();
。
返回一個字符串,其中除-_以外的所有非字母數字字符。 已被替換爲百分號(%)後跟兩個十六進制數字 以及編碼爲加號(+)的空格。它的編碼方式與 對來自WWW表單的發佈數據進行編碼的方式相同,這與 application/x-www-form-urlencoded媒體類型的編碼方式相同。這不同於» RFC 3986編碼(請參閱rawurlencode()),由於歷史原因, 空格編碼爲加號(+)。
更新:由於誤差爲Unable to resolve host
,請確保您的/etc/resolv.conf
文件有0644
的權限。這將確保安全性並允許Apache/PHP讀取和解析主機名。
您可以檢查PHP和Apache可以通過調用gethostbyname();
我試過urlencode但它沒有幫助。現在檢出rawurlencode。 –
嘗試rawurlencode。該網址確實被重新編碼;然而,由於「無法解析主機」錯誤,curl仍然失敗。 –
你可以在CLI中ping主機或者在http://php.net/manual/en/function.gethostbyname.php中拋棄你的目標主機,看看它是否可以解決。 –
如果你正在做這樣
<?php
$url = "http://www.site.com/savings/thispage?OneId=88&SecondId=185";
$encoded = urlencode($url);
// use cURL to fetch $encoded
?>
然後是你從字面上問卷曲獲取http%3A%2F%2Fwww.site.com%2Fsavings%2Fthispage%3FOneId%3D88%26SecondId%3D185
訪問DNS服務。這被視爲主機名,因爲沒有「/」字符來將主機名與請求路徑分開。
你是如何啓動cURL的?您是使用PHP library,還是通過system()
或shell_exec()
之類的東西運行它?您可能需要以不同的方式(或根本不用)進行轉義,具體取決於您如何啓動它。
如果你實際上是在命令行中運行它(而不是從PHP在所有),那麼類似下面應該做很好:
curl 'http://www.site.com/savings/thispage?OneId=88&SecondId=185'
你是如何開展卷曲?你是使用PHP庫(http://www.php.net/cURL),還是通過'system()'(http://www.php.net/system)或'shell_exec()' (http://www.php.net/shell_exec)? – GargantuChet