使用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 相关文章推荐
社区(php&amp;&amp;mysql)五
Oct 09 PHP
php microtime获取浮点的时间戳
Feb 21 PHP
PHP中通过加号合并数组的一个简单方法分享
Jan 27 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 PHP
php数组去重复数据示例
Feb 25 PHP
thinkphp使用phpmailer发送邮件的方法
Nov 24 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
php实现上传图片文件代码
Jul 19 PHP
PHP 的比较运算与逻辑运算详解
May 12 PHP
php常用正则函数实例小结
Dec 29 PHP
Yii2实现UploadedFile上传文件示例
Feb 15 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
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
js中settimeout方法加参数的使用实例
2014/02/27 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
微信小程序实现多宫格抽奖活动
2020/04/15 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
python实现log日志的示例代码
2018/04/28 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
python框架django项目部署相关知识详解
2019/11/04 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
Python生成器generator原理及用法解析
2020/07/20 Python
python 爬虫请求模块requests详解
2020/12/04 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
初中生学习的自我评价
2013/11/14 职场文书
团支部推优材料
2014/05/21 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电
解决python存数据库速度太慢的问题
2021/04/23 Python