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中防止SQL注入攻击和XSS攻击的两个简单方法
Apr 15 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
typecho插件编写教程(六):调用接口
May 28 PHP
Yii2如何批量添加数据
May 17 PHP
PHP实现bitmap位图排序与求交集的方法
Jul 28 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 PHP
PHP基础之输出缓冲区基本概念、原理分析
Jun 19 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 adodb分页实现代码
2009/03/19 PHP
PHP调用C#开发的dll类库方法
2014/07/28 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
小程序实现按下录音松开识别语音
2019/11/22 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
python中使用序列的方法
2015/08/03 Python
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
python实现红包裂变算法
2016/02/16 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
对python:print打印时加u的含义详解
2018/12/15 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
Python版中国省市经纬度
2020/02/11 Python
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
Windows和Linux动态库应用异同
2016/07/28 面试题
计算机专业毕业生的自我评价
2013/11/18 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
团支部书记竞选稿
2015/11/21 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL