file_get_contents - URL中的特殊字符

时间:2012-05-01 11:00:24

标签: php

我正在尝试使用file_get_contents从远程服务器获取图像。图像的URL可能包含空格和/或特殊字符,如ý,á,í等,当它执行时,操作将失败,并显示HTTP代码400 - 错误请求。如果我尝试使用urlencoderawurlencode对网址(或该网址的细分)进行编码,则会获得404.

当图像URL不包含空格或特殊字符时,可以毫无问题地下载它。

我有一种预感,这与编码有关,但我无法理解。 有没有我缺少的编码选项?是否必须为请求设置标头?

1 个答案:

答案 0 :(得分:2)

file_get_contents的问题是UTF-8编码(在PHP中尚未实现) 如果您想要使用此功能的下载文件,您必须在您的URL上执行类似的操作:

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

之后:

$content = file_get_contents($url_utf8);