我正在尝试使用file_get_contents
从远程服务器获取图像。图像的URL可能包含空格和/或特殊字符,如ý,á,í等,当它执行时,操作将失败,并显示HTTP代码400 - 错误请求。如果我尝试使用urlencode
或rawurlencode
对网址(或该网址的细分)进行编码,则会获得404.
当图像URL不包含空格或特殊字符时,可以毫无问题地下载它。
我有一种预感,这与编码有关,但我无法理解。 有没有我缺少的编码选项?是否必须为请求设置标头?
答案 0 :(得分:2)
file_get_contents的问题是UTF-8编码(在PHP中尚未实现) 如果您想要使用此功能的下载文件,您必须在您的URL上执行类似的操作:
$url_utf8 = rawurlencode(utf8_encode($url));
之后:
$content = file_get_contents($url_utf8);