« jQuery对下拉框、单选框、多选框的处理 Iframe高度自适应(兼容IE/Firefox、同域/跨域) »

PHP下载CSS文件中的图片

作为一个资深并且专业的扒皮人员,在我从初三开始投入伟大的互联网中到现在积累了丰富的扒皮经验。我相信每个做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));
}

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

“PHP下载CSS文件中的图片”

18条回复
  1. 扒皮
    沙发
    我都喜欢

    @blankyao, 恩,我以后扒皮的任务都交给你了。

    @kimi, 你的也可以回复了,帅!

  2. 我喜欢扒…

  3. 可喜可贺

  4. 顶一下~!板凳

  5. Hack for CSS Sprite:

    $imagesURLArray = array_unique($imagesURLArray[1]);
    foreach($imagesURLArray as $imagesURL) {
    file_put_contents(basename($imagesURL), file_get_contents($imagesURL));
    }

    @习明, good job 已经修正原文中代码

    @kimi, 还有几个需要fix的:
    1. 注释信息内的url应该干掉
    2. 直接file_get_contents远程url时相对路径的问题
    3. url中’ “应该干掉

    目前想到这3个

  6. 请问这个东西怎么用呀?

    @水皮, 用php命令行或者,web方式跑都可以的。不过如果文件很多的话,用命令行方式更好。

  7. 如果CSS文件中的图片路径是相对路径,此代码就失效了

  8. 好东西啊~

  9. 用firebug分析,
    用另存为就可以保存背景图片嘛.

    @qijun, 这个是批量下载的嘛~~

    @kimi, ie的另存为貌似可以批量保存的,相对路径也没有问题.
    PS,羡慕你,初三就会扒皮了,我大二才会….

  10. 要是图片不存在了,就会报错了

    @lanqy, 是哦,简单的写了一下,你可以在取得图片的地方加个判断即可!

回复留言

*
To prove you're a person (not a spam script), type the security word shown in the picture.
Anti-Spam Image

你可以使用XHTML标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>