编辑澄清:
我想知道url 中的哪些字符导致 file_get_contents / curl 失败。
在下面的示例中,唯一导致问题的字符是空格,所以对我来说最好的办法就是str_replace
在 url 中使用%20
. 是否还有其他字符也会导致它失败?如果是这样,它们是什么?有没有可以代替我的功能?
原文:
我希望能够通过用户选择的 URL 下载任意文件,并可以作为字符串访问它。我最初的反应是:
$str = file_get_contents($url);
但是,这在以下 URL 上失败:
http://i.ebayimg.com/t/2-WAY-PHOTO-FRAME-KEY-BOX-SHABBY-CHIC-STYLE-/00/s/NjAwWDYwMA==/$(KGrHqRHJDoE-PBe-SSLBPlrnIYb Q~~60_35.JPG
接下来,我尝试了cURL
:
function file_get_contents_curl($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
但是,对于相同的 URL,cURL 失败并显示“无效 URL”。
我在这里阅读了许多问题,当从其中包含任意字符的 URL 下载时,必须使用 urlencode。但是,这会导致:
http%3A%2F%2Fi.ebayimg.com%2Ft%2F2-WAY-PHOTO-FRAME-KEY-BOX-SHABBY-CHIC-STYLE-%2F00%2Fs%2FNjAwWDYwMA%3D%3D%2F%24%28KGrHqRHJDoE-PBe-SSLBPlrnIYb+Q%7E%7E60_35.JPG
我认为使用任何一种方法都不会获取,因为现在它认为它是本地文件。我需要做什么才能获取任意网址?