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 相关文章推荐
PHP stristr() 函数(不区分大小写的字符串查找)
Jun 03 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
php图片加水印原理(超简单的实例代码)
Jan 18 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
Yii2简单实现给表单添加验证码的方法
Jul 18 PHP
详解PHP安装mysql.so扩展的方法
Dec 31 PHP
PHP进程通信基础之信号
Feb 19 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
Aug 12 PHP
laravel实现上传图片并在页面显示的例子
Oct 14 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
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
js中符号转意问题示例探讨
2013/08/19 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
警察群众路线整改措施
2014/09/26 职场文书
班主任工作实习计划
2015/01/16 职场文书
谢师宴邀请函
2015/02/02 职场文书
扬州个园导游词
2015/02/06 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
微信搭讪开场白
2015/05/28 职场文书
员工旷工检讨书
2015/08/15 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL