php远程图片保存到本地的代码

看到了网上有不少的远程图片保存到本地的方法,晚上就随手用php写了一个函数,可以利用url抓取指定的网页,然后批量把图片保存到本地。

php保存运程图片到本地的函数

<?php
function save_img($html,$host){ 
    //正规匹配HTML代码中的img地址
    preg_match_all('#<img.*?src="([^"]*)"[^>]*>#i', $html, $match);
    foreach($match[1] as $imgurl){
        //检测图片地址的全法性
        //这里可以自己写规则,
        if(strpos($imgurl, 'http') !== false ){
            $arcurl = $imgurl;
        } else {
            $arcurl = $host.$imgurl;
        }
        $img = file_get_contents($arcurl);
        if(!empty($img)) {
            //随机文件名
            $fileimgname = time().rand(1000,9999).".jpg";
            $filecachs="/".$fileimgname;
            //保存图片到服务器
            @file_put_contents($filecachs, $img );
        }
    }
    return true;
}
?>

函数说明:
1、函数的传入参数,为一串含有html代码的网页源码与抓网站的网址
2、网页的源码中,必需要包含 img html标签
3、函数正规匹配 img 标签里面的图片地址
4、利用图片地址,抓取图片并保存到本地
5、如果远程图片有防盗链,是无法抓取到的
6、关于破解图片防盗链接,可以参考本文的其他文章

函数调用:

<?php
$url = 'http://www.baidu.com';
$html = file_get_contents($url);
save_img($html,$url);
?>

文章参考:https://www.feiniaomy.com/post/498.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值