前几天写过一文章,介绍通过获取网页html代码,然后正则出图片的链接地址的文章php7.3-正则提取网页中所有图片的url地址,文章只介绍了怎么提取图片的URL地址,今天就再写一下获取到图片URL地址后怎么下载图片保存到本地过程。
我搜索了下我的博客,发现原来写过一类似文章,只是介绍的比较简单php7.3.2-分享一个远程下载(采集)图片的函数,咱今天就先忽略此文章,详细的介绍下远程下载图片保存到本地的过程。
我们获取到一个图片的URL后,我们要先分析下这个图片的格式,也就是什么格式的图片,长见图片格式有,jpg、gif、png等。在正则提取网页图片的URL的地址的文章中,我们在最后的数组中,可以直接获取到每一张图片的格式,今天我们拿一张图片的URL做例子,那只有通过正则来获取这个URL链接的图片格式;
- 提取图片的格式;
$url='https://img.rsyncd.net/wp-content/themes/dux/img/logo.png';
preg_match('/https:\/\/blog\.qzze\.com\/wp-content\/themes\/dux\/img\/((.*?)(\.(jpg|gif|png)?))/i',$url,$image);
print_r($image);
//打印结果
Array
(
[0] => https://www.rsyncd.net/wp-content/themes/dux/img/logo.png
[1] => logo.png
[2] => logo
[3] => .png
[4] => png
)
上方代码,我们提取到了图片的名称,图片的格式,方便我们下载图片时使用。
下面是完整的代码,其实和远程获取html基本上一样,只不过最后要把数据保存成图片罢了,图片名称可以写成时间,方便区分图片,当然也可以直接定义成字符串,$image[3]是网页后缀名称。下面是完整的代码
<?php
$url='https://img.rsyncd.net/wp-content/themes/dux/img/logo.png';
preg_match('/https:\/\/blog\.qzze\.com\/wp-content\/themes\/dux\/img\/((.*?)(\.(jpg|gif|png)?))/i',$url,$image);
//print_r($image);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$file_content = curl_exec($ch);
curl_close($ch);
//保存到本地的图片名称
$file=date('YmdHis');
//图片保存路径
$images_file='images/'.$file.$image[3];
$downloaded_file = fopen($images_file, 'w');
fwrite($downloaded_file, $file_content);
fclose($downloaded_file);
下载图片的关键是后缀一定不要搞错了,大家有什么不明白的,可以在下面留言给我。
最新评论
感谢
能不能屏蔽掉刷流量的,统计工具显示全部都是
路过学习了
好像不太行啊 加载不出来啊
好文章
是否可以 实现 判断手机端跳转 而网址不变呢
你好
感谢分享,我也遇到这个了,根据你的提示,屏蔽掉了