PHP通过正则表达式下载图片到本地的实现代码


Posted in PHP onSeptember 19, 2011
<?php 
/* 
author: ssh_kobe 
date: 20110602 
shortage: 如果网页中的图片路径不是绝对路径,就无法抓取 
*/ 
set_time_limit(0);//抓取不受时间限制 $URL='http://pp.baidu.com/';//任意网址 
get_pic($URL); 
function get_pic($pic_url) { 
//获取图片二进制流 
$data=CurlGet($pic_url); 
/*利用正则表达式得到图片链接*/ 
$pattern_src = '/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/'; 
$num = preg_match_all($pattern_src, $data, $match_src); 
$arr_src=$match_src[1];//获得图片数组 
get_name($arr_src); 
echo "<br>finished!!!"; 
return 0; 
} 
/*得到图片类型,并将其保存到与该文件同一目录*/ 
function get_name($pic_arr) 
{ 
//图片类型 
$pattern_type = '/(/.(jpg|bmp|jpeg|gif|png))/'; 
foreach($pic_arr as $pic_item){//循环取出每幅图的地址 
$num = preg_match_all($pattern_type, $pic_item, $match_type); 
$pic_name = get_unique().$match_type[1][0];//改时微秒时间戳命名 
//以流的形式保存图片 
$write_fd = @fopen($pic_name,"wb"); 
@fwrite($write_fd, CurlGet($pic_item)); 
@fclose($write_fd); 
echo "[OK]..!"; 
} 
return 0; 
} 
//通过微秒时间获得唯一ID 
function get_unique(){ 
list($msec, $sec) = explode(" ",microtime()); 
return $sec.intval($msec*1000000); 
} 
//抓取网页内容 
function CurlGet($url){ 
$url=str_replace('&','&',$url); 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_HEADER, false); 
//curl_setopt($curl, CURLOPT_REFERER,$url); 
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; SeaPort/1.2; Windows NT 5.1; SV1; InfoPath.2)"); 
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt'); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0); 
$values = curl_exec($curl); 
curl_close($curl); 
return $values; 
} 
?>
PHP 相关文章推荐
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
php设计模式之单例模式使用示例
Jan 20 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
php如何连接sql server
Oct 16 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 PHP
PHP基于接口技术实现简单的多态应用完整实例
Apr 26 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
PHP进阶学习之类的自动加载机制原理分析
Jun 18 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 #PHP
php去除重复字的实现代码
Sep 16 #PHP
PHP与SQL注入攻击防范小技巧
Sep 16 #PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 #PHP
php中模拟POST传递数据的两种方法分享
Sep 16 #PHP
php中获得视频时间总长度的另一种方法
Sep 15 #PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
Sep 15 #PHP
You might like
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
python读取浮点数和读取文本文件示例
2014/05/06 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
Selenium及python实现滚动操作多种方法
2020/07/21 Python
Python之字典对象的几种创建方法
2020/09/30 Python
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
鼓舞士气的口号
2014/06/16 职场文书
优秀团支部申报材料
2014/12/26 职场文书
营业员岗位职责范本
2015/04/14 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
php去除deprecated的实例方法
2021/11/17 PHP