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 相关文章推荐
PHP5 安装方法
Oct 09 PHP
PHP下通过file_get_contents的代理使用方法
Feb 16 PHP
win7下memCache的安装过程(具体操作步骤)
Jun 28 PHP
php setcookie函数的参数说明及其用法
Apr 20 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
php利用cookies实现购物车的方法
Dec 10 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
php实现随机显示图片方法汇总
May 21 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
phpMyAdmin无法登陆的解决方法
Apr 27 PHP
laravel 验证错误信息到 blade模板的方法
Sep 29 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
Oct 08 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图片上传程序
2008/03/27 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
PHP 文件上传限制问题
2019/09/01 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
js闭包实例汇总
2014/11/09 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
django表单实现下拉框的示例讲解
2018/05/29 Python
python应用文件读取与登录注册功能
2019/09/23 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
Django-migrate报错问题解决方案
2020/04/21 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
建筑经济管理专业求职信分享
2014/01/06 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
长城导游词400字
2015/01/30 职场文书
地心历险记观后感
2015/06/15 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python