使用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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
一个简单实现多条件查询的例子
Oct 09 PHP
动态生成gif格式的图像要注意?
Oct 09 PHP
PHP 反向排序和随机排序代码
Jun 30 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
PHP中比较时间大小实例
Aug 21 PHP
PHP学习笔记(三):数据类型转换与常量介绍
Apr 17 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
Sep 23 PHP
php_pdo 预处理语句详解
Nov 21 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
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
PHP中__get()和__set()的用法实例详解
2013/06/04 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
利用PHP如何实现Socket服务器
2015/09/23 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
PHP微信支付实例解析
2016/07/22 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
jQuery TextBox自动完成条
2009/07/22 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
常用js字符串判断方法整理
2013/10/18 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
Python3实现Web网页图片下载
2016/01/28 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
使用python实现对元素的长截图功能
2019/11/14 Python
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
工程专业毕业生自荐信范文
2013/12/25 职场文书
公益活动邀请函
2014/02/05 职场文书
学术诚信承诺书
2014/05/26 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS