【问题标题】:file_get_contents - special characters in URLfile_get_contents - URL 中的特殊字符
【发布时间】:2012-05-10 22:12:51
【问题描述】:

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

当图像 URL 不包含空格或特殊字符时,下载不会出现问题。

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

【问题讨论】:

  • alickus:这实际上不是重复的,您链接的问题是关于响应内容中的 UTF-8,而不是 URL。
  • 在浏览器中打开该图像。了解浏览器如何编码 URL。然后查看echo urlencode($url);的输出,发现差异
  • 如何清除特殊字符的文件名,然后对用户输入执行相同操作?

标签: php


【解决方案1】:

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

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

之后:

$content = file_get_contents($url_utf8);

【讨论】:

  • 除非 PHP 文件保存为 ISO-8859-1,否则这可能会导致无法预料的结果。
猜你喜欢
  • 2015-10-21
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
相关资源
最近更新 更多