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目录导航文件代码
Oct 09 PHP
如何隐藏你的.php文件
Jan 04 PHP
PHP Squid中可缓存的动态网页设计
Sep 17 PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
php下把数组保存为文件格式的实例应用
Feb 08 PHP
php 安全过滤函数代码
May 07 PHP
php 对输入信息的进行安全过滤的函数代码
Jun 29 PHP
基于PHP静态类的原罪详解
May 06 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
php结合curl实现多线程抓取
Jul 09 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 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中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
php strftime函数的详细用法
2018/06/21 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
jQuery+PHP实现动态数字展示特效
2015/03/14 Javascript
Node.js编程中客户端Session的使用详解
2015/06/23 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
Vue实现购物车功能
2017/04/27 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
Python中操作文件之write()方法的使用教程
2015/05/25 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
python 比较字典value的最大值的几种方法
2020/04/17 Python
Joules美国官网:出色的英国风格
2017/10/30 全球购物
DataList 能否分页,请问如何实现?
2015/05/03 面试题
计算机操作自荐信
2013/12/07 职场文书
高三语文教学反思
2014/01/15 职场文书
关于母亲节的感言
2014/02/04 职场文书
员工安全承诺书
2014/05/22 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
财产保全担保书
2015/01/20 职场文书
关于环保的宣传稿
2015/07/23 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
django 认证类配置实现
2021/11/11 Python