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世纪万年历
Dec 06 PHP
php数组对百万数据进行排除重复数据的实现代码
Jun 08 PHP
php在文件指定行中写入代码的方法
May 23 PHP
php中autoload的用法总结
Nov 08 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
Nov 25 PHP
PHP SPL标准库之接口(Interface)详解
May 11 PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
Yii框架的路由配置方法分析
Sep 09 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 定界符 使用技巧
2009/06/14 PHP
PHP 类型转换函数intval
2009/06/20 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
PHP中Array相关函数简介
2016/07/03 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
JavaScript 学习笔记(四)
2009/12/31 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
js调用图片隐藏&amp;显示实现代码
2013/09/13 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
js获取ip和地区
2017/03/10 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
深入了解js原型模式
2019/05/30 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
Python获取当前时间的方法
2014/01/14 Python
python动态加载包的方法小结
2016/04/18 Python
python队列原理及实现方法示例
2019/11/27 Python
通过实例解析Python调用json模块
2019/12/11 Python
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
MySQL面试题目集锦
2016/04/14 面试题
使用Redis做预定库存缓存功能
2022/04/02 Redis
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android