php中通过正则表达式下载内容中的远程图片的函数代码


Posted in PHP onJanuary 10, 2012

这段程序其实是属于“小偷程序”的重要部分。 这一段程序只是下载远程图片的那一段而已,程序写的比较简单,大多部分都做了注释。

if (preg_match_all("/http://[^ "']+[.jpg|.gif|.jpeg|.png]+/ui",stripcslashes($content),$aliurl)){ 
$i=0; //多个文件++ 
while(list($key ,$v) = each($aliurl[0])){ 
//echo $v."<br />"; 
$filetype = pathinfo($v, PATHINFO_EXTENSION); //获取后缀名 
$ff = @file_get_contents($v); //获取2进制文件内容 
if(!stripos($v,"3water.com")){//判断是否是自己网站下的图片 
if (!empty($ff)){ //获取到文件就执行下面的操作 
$dir = "upload/".date("Ymd")."/";//指定新的存储路径 
if (!file_exists($dir)){//判断目录是否存在 
@mkdir($dir,511,true); //创建多级目录,511转换成十进制是777具有可执行权限 
} 
$nfn = $dir.date("Ymdhis").$i.".".$filetype; //构建文件的新名字 
$nf = @fopen($nfn,"w"); //创建文件 
fwrite($nf,$ff); //写入文件 
fclose($nf); //关闭文件 
$i++; //多文件++ 
echo "<img src="".$nfn."">"; 
$content = str_replace($v,$nfn, $content);//替换content中的参数 
}else{//获取不到图片则替换为默认图片 
$content = str_replace($v,"/upload/201204/20120417213810742.gif", $content);//替换content中的参数 
} 
} 
} 
}

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

<?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; 
} 
?>

下面查看实例

function get_pic_url($content){
  $pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/";//正则
  preg_match_all($pattern,$content,$match);//匹配图片
  return $match[1];//返回所有图片的路径
}

以上就是php中通过正则表达式下载内容中的远程图片的函数代码的详细内容,更多关于正则表达式下载内容中的远程图片的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
php2html php生成静态页函数
Dec 08 PHP
常见的PHP五种设计模式小结
Mar 23 PHP
PHP关联数组的10个操作技巧
Jan 21 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
thinkphp模板输出技巧汇总
Nov 24 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
php+mysqli实现批量替换数据库表前缀的方法
Dec 29 PHP
Zend Framework上传文件重命名的实现方法
Nov 25 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
PHP环形链表实现方法示例
Sep 15 PHP
php实现微信和支付宝支付的示例代码
Aug 11 PHP
PHP三元运算符的结合性介绍
Jan 10 #PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 #PHP
使用PHPMyAdmin修复论坛数据库的图文方法
Jan 09 #PHP
PHP的SQL注入过程分析
Jan 06 #PHP
超级实用的7个PHP代码片段分享
Jan 05 #PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 #PHP
选择PHP作为网站开发语言的原因分享
Jan 03 #PHP
You might like
Array of country list in PHP with Zend Framework
2011/10/17 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
前端轻量级MVC框架CanJS详解
2014/09/26 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
python构建深度神经网络(续)
2018/03/10 Python
Python封装原理与实现方法详解
2018/08/28 Python
python实现合并两个排序的链表
2019/03/03 Python
python tkinter窗口最大化的实现
2019/07/15 Python
python中的global关键字的使用方法
2019/08/20 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
python上selenium的弹框操作实现
2020/07/13 Python
Python用SSH连接到网络设备
2021/02/18 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
党员个人思想汇报
2013/12/28 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
七年级作文之雪景
2019/11/18 职场文书