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下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
php数组总结篇(一)
Sep 30 PHP
PHP5 面向对象(学习记录)
Dec 02 PHP
php数组的概述及分类与声明代码演示
Feb 26 PHP
PHP 类相关函数的使用详解
May 10 PHP
如何用php获取程序执行的时间
Jun 09 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
提交表单后 PHP获取提交内容的实现方法
May 25 PHP
PHP切割汉字的常用方法实例总结
Apr 27 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
JavaScript中常见陷阱小结
2010/04/27 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
BootStrap中
2016/12/10 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
2017/09/23 jQuery
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
Python 中导入csv数据的三种方法
2018/11/01 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
技术入股合作协议书
2014/10/07 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
Python代码实现双链表
2022/05/25 Python
Springboot中如何自动转JSON输出
2022/06/16 Java/Android