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 相关文章推荐
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
php不用正则采集速度探究总结
Mar 24 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
Jul 12 PHP
php分页思路以及在ZF中的使用
May 30 PHP
PHP函数学习之PHP函数点评
Jul 05 PHP
PHP遍历目录并返回统计目录大小
Jun 09 PHP
10个实用的PHP正则表达式汇总
Oct 23 PHP
PHP使用json_encode函数时不转义中文的解决方法
Nov 12 PHP
php构造方法中析构方法在继承中的表现
Apr 12 PHP
php自动载入类用法实例分析
Jun 24 PHP
PHP实现发送微博消息功能完整示例
Dec 04 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
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
10款最好的Web开发的 Python 框架
2015/03/18 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
python处理document文档保留原样式
2019/09/23 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
Django celery异步任务实现代码示例
2020/11/26 Python
css3学习心得分享
2013/08/19 HTML / CSS
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
水电站项目建议书
2014/05/12 职场文书
安全施工标语
2014/06/07 职场文书
文明社区申报材料
2014/08/21 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
服务明星事迹材料
2014/12/29 职场文书
公司庆典欢迎词
2015/01/26 职场文书
担保贷款承诺书
2015/04/30 职场文书
医院保洁员管理制度
2015/08/05 职场文书
初中英语教学反思范文
2016/02/15 职场文书
PHP实现两种排课方式
2021/06/26 PHP