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缩略图生成程式(需要GD库支持)
Mar 06 PHP
php cookie 登录验证示例代码
Mar 16 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
May 07 PHP
php函数重载的替代方法--伪重载详解
May 08 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
Mar 02 PHP
自制PHP框架之模型与数据库
May 07 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 PHP
PHP实现简单日历类编写
Aug 28 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
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
php截取视频指定帧为图片
2016/05/16 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
jquery实现选项卡切换代码实例
2019/05/14 jQuery
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
Python字符串处理函数简明总结
2015/04/13 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
利用Python检测URL状态
2019/07/31 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
最新个人职业生涯规划书
2014/01/22 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
体育活动总结范文
2014/05/04 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
小学德育工作总结2015
2015/05/12 职场文书
React四级菜单的实现
2022/04/08 Javascript