file_get_contents - URL 中的特殊字符


file_get_contents - special characters in URL

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

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

我有一种预感,这与编码有关,但我就是想不通。我缺少编码选项吗?是否有必须为请求设置的标头?

file_get_contents的问题是 UTF-8 编码(尚未在 PHP 中实现)如果你想使用这个函数下载文件,你必须在你的URL上做类似的事情:

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

之后:

$content = file_get_contents($url_utf8);