6

curlライブラリを使用してURLから画像を取得しようとすると、400の不正なリクエストエラーが発生します。問題はURLのエンコードにあることがわかりました。しかし、私の場合は機能しません。私のURL(サーバー側の画像へのパス)は次のようになります。

http://example.com/images/products/product 1.jpg

名前ファイルのユーザースペースは悪い習慣だと理解していますが、それは私のサーバーではなく、それらのファイルを作成したものでもありません。

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, urlencode($url));
echo $ret = curl_exec($ch);

urlencode関数を使用する場合--curlreturnhttp_code = 0

更新しました

$url = str_replace(' ', '+', $url);

動作しません、サーバーは404エラーを返します。

4

4 に答える 4

28

これはうまくいくのでしょうか?

$url = 'http://host/a b.img';
$url = str_replace(" ", '%20', $url);

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
echo $ret = curl_exec($ch);
于 2012-09-09T19:30:03.547 に答える
0

文字列全体をurlencodeすることはできません。これは、エンコードされないままにする必要のあるスラッシュなどをエンコードするためです。スペースが唯一の問題である場合、これは次のことを行います。

str_replace(' ', '+', $url);
于 2012-09-09T19:21:26.923 に答える