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 相关文章推荐
做一个有下拉功能的留言版
Oct 09 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
使用phpQuery采集网页的方法
Nov 13 PHP
php实例分享之html转为rtf格式
Jun 02 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
Yii数据库缓存实例分析
Mar 29 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
PHP缓存工具XCache安装与使用方法详解
Apr 09 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
Aug 05 PHP
laravel 实现登陆后返回登陆前的页面方法
Oct 03 PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 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.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
php计算多维数组中所有值总和的方法
2015/06/24 PHP
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
python如何去除字符串中不想要的字符
2020/07/05 Python
python实现汽车管理系统
2018/11/30 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
params有什么用
2016/03/01 面试题
宿舍标语大全
2014/06/19 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
临时用工协议书范本
2014/10/29 职场文书
李白故里导游词
2015/02/12 职场文书
公司费用报销管理制度
2015/08/04 职场文书
商务宴会祝酒词
2015/08/11 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL