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和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
PHP中的cookie不用刷新就生效的方法
Feb 04 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
Jun 13 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
基于laravel where的高级使用方法
Oct 10 PHP
php上传后台无法收到数据解决方法
Oct 28 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP终止脚本运行三种实现方法详解
Sep 01 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
PHP 在线翻译函数代码
2009/05/07 PHP
用mysql触发器自动更新memcache的实现代码
2009/10/11 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
跟我学Laravel之安装Laravel
2014/10/15 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
JavaScript实现DOM对象选择器
2016/09/24 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
Python tkinter模版代码实例
2020/02/05 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
EJB的基本架构
2016/09/22 面试题
初中三年学生的学习自我评价
2013/11/13 职场文书
酒店节能减排方案
2014/05/26 职场文书
优秀毕业生求职信
2014/06/05 职场文书