看到了网上有不少的远程图片保存到本地的方法,晚上就随手用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);
?>
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询