使用PHP实现下载CSS文件中的图片


Posted in PHP onDecember 06, 2015

作为一个资深并且专业的扒皮人员,在我从初三开始投入伟大的互联网中到现在积累了丰富的扒皮经验。我相信每个做web的程序员也都会有类似的经历。

在扒皮过程中,必不可少的需要下载样式文件中的图片。碰到比较庞大的样式文件,其中可能会有上百个需要下载的图片,那么使用下面这段小代码是最为合适的了。

< ?php
/*
 More & Original PHP Framwork
 Copyright (c) 2007 - 2008 IsMole Inc.

 Author: kimi
 Documentation: 下载样式文件中的图片,水水专用扒皮工具
*/

//note 设置PHP超时时间
set_time_limit(0);

//note 取得样式文件内容
$styleFileContent = file_get_contents('images/style.css');

//note 匹配出需要下载的URL地址
preg_match_all("/url\((.*)\)/", $styleFileContent, $imagesURLArray);

//note 循环需要下载的地址,逐个下载
$imagesURLArray = array_unique($imagesURLArray[1]);
foreach($imagesURLArray as $imagesURL) {
 file_put_contents(basename($imagesURL), file_get_contents($imagesURL));
}

再给大家分享一段封装好的类

/** 
* 获取CSS中图片地址,并且保存到本地 
*/
class getInCssImage
{ 
/** 
* 图片保存下来
* @param $cssUrl css的url地址
* @param $dir 保存图片的目录
* @return void
*/
static public function saveImage($cssUrl, $dir)
{ 
$content = file_get_contents($cssUrl); 
$patterns = '/images(.*).(jpg|gif|png)/'; //正则根据不同地址需要变换
preg_match_all($patterns, $content, $matches);
$imagesUrls = $matches[0];
if (!is_dir($dir))
mkdir(dirname(__FILE__). '/'. $dir, 0777);
foreach($imagesUrls as $image)
{ 
ob_start();
$imageUrl = "http://www.xx.com/".$image; //这个地址本来用程序给获取的。偷懒了下
readfile($imageUrl);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img);
$localImage = $dir. strchr($image, '/'); //存到本地的图片地址
$fp = fopen($localImage, 'a');
fwrite($fp, $img);
fclose($fp);
} 
} 
}
}
$content = getInCssImage::saveImage('/css/css.css', 'image');

最后预祝各位在扒皮的过程中,一扒到底!

另外附上关于file_put_contents定义和用法

file_put_contents() 函数把一个字符串写入文件中。
与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。

语法

file_put_contents(file,data,mode,context)

参数 描述

file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode 
可选。规定如何打开/写入文件。可能的值:
FILE_USE_INCLUDE_PATH
FILE_APPEND
LOCK_EX
context 
可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。

PHP 相关文章推荐
第十一节 重载 [11]
Oct 09 PHP
php模板中出现空行解决方法
Mar 08 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
说说PHP的autoLoad自动加载机制
Sep 27 PHP
php正则表达式使用的详细介绍
Apr 27 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
php自定义函数实现二维数组排序功能
Jul 20 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
PHP中Notice错误常见解决方法
Apr 28 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
Aug 30 PHP
PHP数组Key强制类型转换实现原理解析
Sep 01 PHP
PHP扩展Memcache分布式部署方案
Dec 06 #PHP
PHP微信红包API接口
Dec 05 #PHP
php实现微信发红包
Dec 05 #PHP
详解php比较操作符的安全问题
Dec 03 #PHP
thinkPHP模型初始化实例分析
Dec 03 #PHP
ZF框架实现发送邮件的方法
Dec 03 #PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 #PHP
You might like
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
window.open打开窗口被拦截的快速解决方法
2016/08/04 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
常用python数据类型转换函数总结
2014/03/11 Python
python文件和目录操作方法大全(含实例)
2014/03/12 Python
python简单的函数定义和用法实例
2015/05/07 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
python中的变量如何开辟内存
2018/06/26 Python
Win8下python3.5.1安装教程
2020/07/29 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
教师党性分析材料
2014/02/04 职场文书
合作意向书模板
2014/03/31 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
大学生暑假实习总结
2015/07/13 职场文书