明確化のために編集:
URL のどの文字が原因で file_get_contents / curl が失敗するかを知りたいです。
以下の例では、問題を引き起こす唯一の文字はスペースであるため、私にとって最善の方法はstr_replace
、%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
どちらの方法を使用しても、どちらもフェッチされません。これは、ローカルファイルであると見なされるためだと思います。任意の URL を取得するにはどうすればよいですか?