php实现的css文件背景图片下载器代码
本文实例讲述了php实现的css文件背景图片下载器代码。分享给大家供大家参考。具体实现方法如下:
下载css文件里面的背景图片是我们这些盗版份子长期搞的事情,下载个css图片下载器常出现各种广告弹窗,实在扛不住。这里就提供了一个php版的css文件背景图片下载器给大家。
把文件放到php程序目录dos下面php.execssImages.php0http://www.xxxx.com/css/style.css\images\
先在php程序目录建个images文件夹,呵呵,贴代码:
<?php /** *@阿唐2013-4-622:19 *@呵呵 */ set_time_limit(0); error_reporting(E_ERROR); if($argc<4){ print_r(' +-------------------------------------------------+ Usage:php'.$argv[0].'css路径类型(0为远程、1为本地)css文件路径图片保存目录 Example: php.exe'.$argv[0].'0http://www.xxx.com/index.css\images\ +-------------------------------------------------+ '); exit(); } //远程css if($argv[1]==0){ $host=getParse($argv[2],'host'); $savePath=getSavePath($argv[3]); $images=getCssImagesArray($argv[2]); //print_r($images); $imagesurls=getImagesLinks($images,$argv[2]); imagesDowner($imagesurls); } //本地css开始 if($argv[1]==1){ //懒得写了,呵呵,这个没多大意义 } /* *css图片分析函数 *$csspath css文件路径 */ functiongetCssImagesArray($csspath){ $cssFile=file_get_contents($csspath); $images=array(); preg_match_all("|url\((.+)\)|i",$cssFile,$images); $images=$images[1]; return$images; } /* *css文件相对目录处理函数 *$path路径 */ functiongetNocssPath($path){ global$host; $tempLinkmages=''; //相当路径获取 $tempPath=explode('/',$path); for($i=1;$i<(count($tempPath)-2);$i++){ $tempLinkmages.=$tempPath[$i].'/'; } $xdImage=$host.$tempLinkmages; return$xdImage; //相当路径获取 } /* *图片连接获取函数 *$imagesarray所有需要获取的images数组 *cssLinkcss文件链接 */ functiongetImagesLinks($imagesArray,$cssLink){ global$host; $urlImages=array(); foreach($imagesArrayas$key=>$value){ if(pathCheck($value)){ if((!in_array(($host.$value),$urlImages))){ $urlImages[$key]=$host.$value; } }else{ if((!in_array((getNocssPath(getParse($cssLink,'path')).$value),$urlImages))){ $urlImages[$key]=getNocssPath(getParse($cssLink,'path')).$value; } } } return$urlImages; } /* *图片获取 *$urlImages需要下载的图片数组 */ functionimagesDowner($urlImages){ //print_r($urlImages); foreach($urlImagesas$key=>$value){ $urlImagesOk[$key]=str_replace('//','/',$value); $urlImagesOk[$key]=str_replace('"','',$urlImagesOk[$key]); $urlImagesOk[$key]=str_replace("'",'',$urlImagesOk[$key]); $urlImagesOk[$key]='http://'.$urlImagesOk[$key]; if(grabImage($urlImagesOk[$key],basename($urlImagesOk[$key]))){ print_r( basename($urlImagesOk[$key]).'文件下载成功 '); }else{ print_r( basename($urlImagesOk[$key]).' 下载失败 '); } } //print_r($urlImagesOk); } /* *相对路径绝对路径判定函数 *$imageUrl图片链接数组 *true为绝对路径 *false为相当路径 */ functionpathCheck($imageUrl){ if(preg_match('|^(\/)|',$imageUrl)){ returntrue; }else{ returnfalse; } } /* *图片下载函数 *$url图片链接 *$filename图片名字 */ functiongrabImage($url,$filename){ global$savePath; if($url==''){ returnfalse;//如果$url为空则返回false; } $ext_name=strrchr($url,'.');//获取图片的扩展名 if($ext_name!='.gif'&&$ext_name!='.jpg'&&$ext_name!='.bmp'&&$ext_name!='.png'){ returnfalse;//格式不在允许的范围 } if($filename==''){ returnfalse;//名称无效 } //开始捕获 ob_start(); if(readfile($url)){ $img_data=ob_get_contents(); ob_end_clean(); $size=strlen($img_data); }else{ ob_end_clean(); returnfalse; } if(($local_file=fopen($savePath.$filename,'a'))&&(fwrite($local_file,$img_data))) { fclose($local_file); returntrue; } } /* *保存目录 */ functiongetSavePath($savepath){ $savePath=$savepath; $savePath=dirname(__FILE__).$savePath; return$savePath; } /* *解析url */ functiongetParse($host,$type){ $baseurl=parse_url($host); return$baseurl[$type].'/'; //echo$baseurl; } ?>
希望本文所述对大家的PHP程序设计有所帮助。