php正则表达式下载内容中的远程图片

2011年12月11日 04:25 by:老修

下午抽空写了个用PHP正则表达式判断内容中的图片,下载并保存非本域名下的图片的程序。

这段程序其实是属于“小偷程序”的重要部分。 这一段程序只是下载远程图片的那一段而已,程序写的比较简单,大多部分都做了注释。

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,"lao8.org")){//判断是否是自己网站下的图片	
			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,"http://www.lao8.org/images/default.gif", $content);//替换content中的参数	
			}
		}
	}
}