• 技术文章 >后端开发 >php教程

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

    2016-07-13 10:14:32原创299

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


    本文实例讲述了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('//m.sbmmt.com/m/',$path);
    for($i=1;$i<(count($tempPath)-2);$i++){
    $tempLinkmages .= $tempPath[$i].'//m.sbmmt.com/m/';
    }
    $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('//','//m.sbmmt.com/m/',$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].'//m.sbmmt.com/m/';

    //echo $baseurl;
    }
    ?>

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

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/909332.htmlTechArticlephp实现的css文件背景图片下载器代码, 本文实例讲述了php实现的css文件背景图片下载器代码。分享给大家供大家参考。具体实现方法如下:...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php css 图片
    上一篇:php多个文件及图片上传实例详解,_PHP教程 下一篇:php中cookie实现二级域名可访问操作的方法,cookie二级域名_PHP教程
    千万级数据并发解决方案

    相关文章推荐

    • 用PHP实现自己的sha-256哈希算法!• 让php5.1.6支持json_encode()解决方案• 今日开始带两个实习生做php(2)• 求解一题!该怎么解决• zend debugger 如何安装
    1/1

    PHP中文网