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 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
PHP分多步骤填写发布信息的简单方法实例代码
Sep 23 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
PHP获取网页标题的3种实现方法代码实例
Apr 11 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
WordPress开发中用于标题显示的相关函数使用解析
Jan 07 PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 PHP
TP5框架简单登录功能实现方法示例
Oct 31 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的ob_start来生成静态页面的方法分析
2011/03/09 PHP
php去除数组中重复数据
2014/11/18 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
python实现图片处理和特征提取详解
2017/11/13 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
windows下的pycharm安装及其设置中文菜单
2020/04/23 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
python实现邮件循环自动发件功能
2020/09/11 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
实习护理工作自我评价
2013/09/25 职场文书
公务员总结性个人自我评价
2013/12/05 职场文书
高中生活自我鉴定
2014/01/18 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
服务承诺口号
2014/05/22 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
具结保证书
2015/01/17 职场文书
校运会宣传稿大全
2015/07/23 职场文书
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript