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


Posted in PHP onNovember 11, 2014

本文实例讲述了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 相关文章推荐
PHP文件读写操作之文件写入代码
Jan 13 PHP
php模板中出现空行解决方法
Mar 08 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
php获取文件内容最后一行示例
Jan 09 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
php限制ip地址范围的方法
Mar 31 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
php中foreach结合curl实现多线程的方法分析
Sep 22 PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
Oct 11 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 #PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 #PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
Nov 11 #PHP
PHP基于imap获取邮件实例
Nov 11 #PHP
php无限极分类递归排序实现方法
Nov 11 #PHP
php实现压缩多个CSS与JS文件的方法
Nov 11 #PHP
详谈PHP文件目录基础操作
Nov 11 #PHP
You might like
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python实现的文件夹清理程序分享
2014/11/22 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
python调用自定义函数的实例操作
2019/06/26 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
汽车检测与维修专业求职信
2013/10/30 职场文书
导游的职业规划书范文
2013/12/27 职场文书
办理退休介绍信
2014/01/09 职场文书
打架检讨书50字
2014/01/11 职场文书
《会变的花树叶》教学反思
2014/02/10 职场文书
大三学习计划书范文
2014/05/02 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
格林童话读书笔记
2015/06/30 职场文书
安全生产培训心得体会
2016/01/18 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android
MySQL深分页问题解决思路
2022/12/24 MySQL