2012-05-01 68 views
6

我試圖使用file_get_contents從遠程服務器獲取圖像。圖像的URL可能包含空格和/或特殊字符(如ý,á,í等),並且在操作失敗時會顯示HTTP代碼400 - 錯誤請求。如果我嘗試編碼URL(或URL的段),使用urlencoderawurlencode,我得到一個404file_get_contents - URL中的特殊字符

當圖像URL不包含空格,也沒有特殊字符是沒有問題的下載。

我有一個預感,這有一些與編碼有關,但我無法弄清楚。 有沒有我錯過的編碼選項?是否有必須爲請求設置的標題?

+2

http://stackoverflow.com/questions/2236668/file-get-contents-breaks-up-utf-8-characters –

+1

alickus:這不是真正一個重複的,你鏈接的問題是關於響應內容中的UTF-8,而不是URL。 – Kaivosukeltaja

+1

在您的瀏覽器中打開該圖像。瞭解瀏覽器如何編碼URL。然後看到echo urlencode($ url)的輸出;'並找到差異 – galymzhan

回答

1

與的file_get_contents的問題是UTF-8編碼(沒有在PHP中尚未實現) 如果你想下載的文件使用此功能,你必須做這樣的事情在你的網址:

$url_utf8 = rawurlencode(utf8_encode($url));

而經過:

$content = file_get_contents($url_utf8);

+1

這可能會導致不可預知的結果,除非PHP文件保存爲「ISO-8859-1」。 –