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 相关文章推荐
DOMXML函数笔记
Oct 09 PHP
用PHP读注册表
Oct 09 PHP
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
php foreach循环中使用引用的问题
Nov 06 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
PHP实现递归目录的5种方法
Oct 27 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
PHP生成加减算法方式的验证码实例
Mar 12 PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 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+DBM的同学录程序(5)
2006/10/09 PHP
mysq GBKl乱码
2006/11/28 PHP
一个捕获函数输出的函数
2007/02/14 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
IE8 原生JSON支持
2009/04/13 Javascript
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
easy_install python包安装管理工具介绍
2013/02/10 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
利用python如何处理nc数据详解
2018/05/23 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
自荐书格式
2013/12/01 职场文书
财政局长自荐信范文
2013/12/22 职场文书
旅游管理毕业生自荐书
2014/02/02 职场文书
政工例会汇报材料
2014/08/26 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
Python进程池与进程锁之语法学习
2022/04/11 Python