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 17 PHP
TMDPHP 模板引擎使用教程
Mar 13 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
在yii中新增一个用户验证的方法详解
Jun 20 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
Yii学习总结之安装配置
Feb 22 PHP
从性能方面考虑PHP下载远程文件的3种方法
Dec 29 PHP
Laravel 5.3 学习笔记之 配置
Aug 28 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 PHP
php装饰者模式简单应用案例分析
Oct 23 PHP
Laravel中如何轻松容易的输出完整的SQL语句
Jul 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
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
php 面向对象的一个例子
2011/04/12 PHP
PHP中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
js实现rem自动匹配计算font-size的示例
2017/11/18 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
Python实现注册登录系统
2017/08/08 Python
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
使用python计算三角形的斜边例子
2020/04/15 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
介绍一下linux的文件权限
2014/07/20 面试题
工地安全检查制度
2014/02/04 职场文书
助理政工师申报材料
2014/06/03 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
公司开会通知
2015/04/20 职场文书
公司员工体检通知
2015/04/21 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书