【问题标题】:if image url contains character like "+" can't save image如果图片网址包含“+”之类的字符,则无法保存图片
【发布时间】:2012-12-01 09:34:20
【问题描述】:

当用户发布图片网址时,我正在尝试保存图片。 我正在使用以下代码执行此操作:

        $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 时似乎“+”字符被空格替换了? p>

【问题讨论】:

  • 你为什么要 MySQL 转义一个 URL 然后请求它?转义不会改变整个 URL 吗?尝试打印$pic 看看是否符合您的预期。
  • 删除了 mysql 转义。还是不行。网址有什么奇怪的地方吗?
  • + 可能是一个编码空间。也许 urldecode() 会帮助你。

标签: php file-get-contents scrape


【解决方案1】:

使用这个,

$pic = str_replace("+","_",$pic);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2020-11-16
    • 2019-01-31
    • 2020-04-30
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多