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 adodb分页实现代码
Mar 19 PHP
php获取301跳转URL简单实例
Dec 16 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 PHP
php实现上传图片文件代码
Jul 19 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
Oct 08 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
php文件上传原理与实现方法详解
Dec 20 PHP
php swoft框架实例用法
Dec 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
关于php mvc开发模式的感想
2011/06/28 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
WAF的正确bypass
2017/01/05 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
微信小程序实现留言板(Storage)
2018/11/02 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
机械制造专业毕业生求职信
2014/03/02 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
教师网络培训心得体会
2016/01/09 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
7个关于Python的经典基础案例
2021/11/07 Python
Linux中如何安装并部署Redis
2022/04/18 Servers