ユーザーが画像の URL を投稿したときに画像を保存しようとしています。私はこのコードでこれをやっています:
$pic = $Db->escape($_POST['form_pic']); // (escape is a function to mysql_real_escape_string)
$time = strtotime("now");
$filename = $item_id.'_'.$time.'.'.$ext;
$item_pic = 'img/ads/'.$filename;
$contents = file_get_contents($pic);
file_put_contents('../img/ads/'. $filename, $contents);
これはほとんどの場合に機能します。しかし、URL に「+」などの奇妙な文字が含まれている場合、上記のコードは機能しません。その場合、彼は画像を保存しません。
An example url: http://2.bp.blogspot.com/-ubBMWObG6u0/T-m3zYIq3CI/AAAAAAAABxU/Z8aa1Dgny9c/s1600/Grown+sunglasses.jpg
URLに「奇妙な」文字が含まれていても、すべての画像ファイルを保存するにはどうすればよいですか?
更新: $_POST['form_pic'] をエコーしましたが、送信後に URL を投稿すると、「+」文字がスペースに置き換えられたように見えますか?