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程序设计有所帮助。