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 相关文章推荐
xajax写的留言本
Nov 25 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
php数据库备份还原类分享
Mar 20 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
使用PHP进行微信公众平台开发的示例
Aug 21 PHP
twig里使用js变量的方法
Feb 05 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 PHP
php把文件设置为插件的技巧方法
Feb 03 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
php的单例模式及应用场景详解
Feb 27 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
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
Javascript之String对象详解
2016/06/08 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
浅谈图像处理中掩膜(mask)的意义
2020/02/19 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
利用python绘制正态分布曲线
2021/01/04 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
污水厂厂长岗位职责
2014/01/04 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
产品包装策划方案
2014/05/18 职场文书
廉洁教育学习材料
2014/05/19 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
甜品店创业计划书
2014/09/21 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
十岁生日答谢词
2015/01/05 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书