php实现的css文件背景图片下载器代码

yipeiwu_com5年前PHP代码库

本文实例讲述了php实现的css文件背景图片下载器代码。分享给大家供大家参考。具体实现方法如下:

下载css文件里面的背景图片是我们这些盗版份子长期搞的事情,下载个css图片下载器常出现各种广告弹窗,实在扛不住。这里就提供了一个php版的css文件背景图片下载器给大家。

把文件放到php程序目录 dos下面 php.exe cssImages.php 0 http://www.xxxx.com/css/style.css \images\

先在php程序目录建个images文件夹,呵呵,贴代码:

复制代码 代码如下:
<?php   
/**  
*@阿唐 2013-4-6 22: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].' 0 http://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文件路径  
 */   
function getCssImagesArray($csspath){   
    $cssFile = file_get_contents($csspath);   
    $images = array();   
    preg_match_all("|url\((.+)\)|i",$cssFile,$images);   
    $images = $images[1];   
    return $images;   
}   
/*  
 * css文件相对目录处理函数  
 * $path 路径  
 */   
function getNocssPath($path){   
    global $host;   
    $tempLinkmages='';   
    //相当路径获取   
    $tempPath = explode('/',$path);   
    for($i=1;$i<(count($tempPath)-2);$i++){   
        $tempLinkmages .= $tempPath[$i].'/';   
    }   
    $xdImage = $host.$tempLinkmages;   
    return $xdImage;   
    //相当路径获取   
}   
   
/*  
 * 图片连接获取函数  
 * $images array 所有需要获取的images数组  
 * cssLink css文件链接  
 */   
function getImagesLinks($imagesArray,$cssLink){   
global $host;   
$urlImages = array();   
    foreach($imagesArray as $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需要下载的图片数组  
 */   
function imagesDowner($urlImages){   
//print_r($urlImages);   
    foreach($urlImages as $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 为相当路径  
 */   
function pathCheck($imageUrl){   
    if(preg_match('|^(\/)|',$imageUrl)){   
        return true;   
    }else{   
        return false;   
    }   
}   
   
/*  
 * 图片下载函数  
 * $url 图片链接  
 * $filename图片名字  
 */   
function grabImage($url, $filename){   
    global $savePath;    
    if($url == '') {   
        return false; //如果 $url 为空则返回 false;   
           
    }   
    $ext_name = strrchr($url, '.'); //获取图片的扩展名   
    if($ext_name != '.gif' && $ext_name != '.jpg' && $ext_name != '.bmp' && $ext_name != '.png') {   
        return false; //格式不在允许的范围   
           
    }   
    if($filename == '') {   
        return false; //名称无效   
           
    }   
    //开始捕获   
    ob_start();   
    if(readfile($url)){   
        $img_data = ob_get_contents();   
        ob_end_clean();   
        $size = strlen($img_data);   
    }else{   
    ob_end_clean();   
    return false;   
    }   
    if(($local_file = fopen($savePath.$filename , 'a'))&&(fwrite($local_file, $img_data)))   
    {   
        fclose($local_file);   
        return true;   
    }   
}   
/*  
 * 保存目录  
 */   
function getSavePath($savepath){   
    $savePath = $savepath;   
    $savePath = dirname(__FILE__).$savePath;   
    return $savePath;   
}   
/*  
 * 解析url  
 */   
function getParse($host,$type){   
    $baseurl = parse_url($host);   
    return $baseurl[$type].'/';   
   
//echo $baseurl;   
}   
?>

希望本文所述对大家的PHP程序设计有所帮助。

相关文章

PHP生成plist数据的方法

本文实例讲述了PHP生成plist数据的方法。分享给大家供大家参考。具体如下: 这段代码实现PHP数组转换为苹果plist XML或文本格式 <?PHP /** *...

PHP 防恶意刷新实现代码

复制代码 代码如下:<?php session_start(); $k=$_GET['k']; $t=$_GET['t']; $allowTime = 1800;//防刷新时间 $...

PHP 伪静态技术原理以及突破原理实现介绍

先说实现方法: inj.php: 复制代码 代码如下: <?php set_time_limit(10); $id=$_GET["id"]; $id=str_replace(" "...

表单提交错误后返回内容消失问题的解决方法(PHP网站)

表单提交错误后返回内容消失怎么办呐,今天就来分析解决一下这个问题。 状况概述: 做填写表单信息提交的时候会碰到一个问题就是当用户填写并提交表单后,程序判断不符合要求并返回,返回之后之前填...

PHP 循环列出目录内容的函数代码

复制代码 代码如下: function list_files($dir) { if(is_dir($dir)) { if($handle = opendir($dir)) { while...