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中的类-什么叫类
Nov 20 PHP
相对路径转化成绝对路径
Apr 10 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
Php中文件下载功能实现超详细流程分析
Jun 13 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
解析php中heredoc的使用方法
Jun 17 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
php给图片添加文字水印方法汇总
Aug 27 PHP
CI框架集成Smarty的方法分析
May 17 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 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
记录mysql性能查询过程的使用方法
2013/05/02 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
Javascript 判断客户端浏览器类型代码
2010/03/01 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
python实现的文件同步服务器实例
2015/06/02 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
python如何实现视频转代码视频
2019/06/17 Python
python按修改时间顺序排列文件的实例代码
2019/07/25 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
keras 读取多标签图像数据方式
2020/06/12 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
优秀经理获奖感言
2014/03/04 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
2014年实习生工作总结
2014/11/27 职场文书
筑梦中国心得体会
2016/01/18 职场文书
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
redis击穿 雪崩 穿透超详细解决方案梳理
2022/03/17 Redis