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生成带有雪花背景的验证码
Oct 09 PHP
php的计数器程序
Oct 09 PHP
解决GD中文乱码问题
Feb 14 PHP
用PHP连接MySQL代码的参数说明
Jun 07 PHP
PHP __autoload()方法真的影响性能吗?
Mar 30 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
php中导出数据到excel时数字变为科学计数的解决方法
Feb 03 PHP
ini_set的用法介绍
Jan 07 PHP
PHP安全上传图片的方法
Mar 21 PHP
PHP实现的解汉诺塔问题算法示例
Aug 06 PHP
php中上传文件的的解决方案
Sep 25 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 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
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
php中的一个中文字符串截取函数
2007/02/14 PHP
dedecms模版制作使用方法
2007/04/03 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
2016/06/25 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
Python中多线程及程序锁浅析
2015/01/21 Python
基于python实现微信模板消息
2015/12/21 Python
Python连接DB2数据库
2016/08/27 Python
python与php实现分割文件代码
2017/03/06 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
python中cPickle类使用方法详解
2018/08/27 Python
对Python函数设计规范详解
2019/07/19 Python
Python argparse模块应用实例解析
2019/11/15 Python
Python创建临时文件和文件夹
2020/08/05 Python
实习生个人的自我评价
2013/12/08 职场文书
护理实习生带教计划
2015/01/16 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
调研报告的主要写法
2019/04/18 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js