使用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;mysql(五)
Oct 09 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
Laravel框架学习笔记(一)环境搭建
Oct 15 PHP
php中count获取多维数组长度的方法
Nov 03 PHP
php实现图片文件与下载文件防盗链的方法
Nov 03 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
php操作access数据库的方法详解
Feb 22 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
PHPMAILER实现PHP发邮件功能
Apr 18 PHP
PHP实现基于3DES算法加密解密字符串示例
Aug 24 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 MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
php实现文件编码批量转换
2014/03/10 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
jQuery制作可自定义大小的拼图游戏
2015/03/30 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
微信小程序实现图片上传
2019/05/23 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
Python编写百度贴吧的简单爬虫
2015/04/02 Python
Python连接数据库学习之DB-API详解
2017/02/07 Python
python正则实现计算器功能
2017/12/14 Python
详解python的四种内置数据结构
2019/03/19 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
python实现TCP文件传输
2020/03/20 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
物业门卫岗位职责
2013/12/28 职场文书
保险专业自荐信范文
2014/02/20 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
和谐社区口号
2014/06/19 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
维稳承诺书
2015/01/20 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫