我们在 $string
中有一个类似 http://site.s3.amazonaws.com/images/some image @name.jpg
的 url>
我正在尝试做什么(是的,url 周围有一个空格):
$string = urlencode(trim($string));
$string_data = file_get_contents($string);
我得到的(@也被替换):
file_get_contents(http%3A%2F%2Fsite.s3.amazonaws.com%2Fimages%2Fsome+image+@name.jpg)[function.file-get-contents]: 无法打开流:没有这样的文件或目录
如果您将 http://site.s3.amazonaws.com/images/some image @name.jpg
复制/粘贴到浏览器地址栏,图像将打开。
有什么问题以及如何解决?
最佳答案
对整个 URL 使用函数 urlencode()
将生成无效的 URL。保留 URL 也是不正确的,因为与浏览器相比,file_get_contents()
函数不执行 URL normalization。 .在您的示例中,您需要用 %20
替换空格:
$string = str_replace(' ', '%20', $string);
关于php - urlencode 和 file_get_contents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11071257/