抓取并下载CSS中所有图片文件的php代码
分类:PHP作者:编程之家
这篇文章的亮点是,正则式更加复杂鸟,╮(-_-)╭,再就是 copy 函数的灰常强大的一个用法。
> 话说刚才听 NsYta 说小邪的主题太白了,杯具。最近太忙,没有空,不然就自己搞一个新主题。 一. 抓取 CSS 中的图片:
> 1. 首先做好准备工作:
> 第一步,先把 CSS 原本的路径存到 $url 变量里,然后把 CSS 的内容保存在 abc.css 中。
> 因为考虑到经常碰到多个 CSS 文件的状况,所以小邪没有直接填一个 CSS 路径。
> 而是把几个 CSS 文件的内容合并到一起,全部塞到 abc.css 文件里面即可,嘎嘎嘎。 $data = file_get_contents('abc.css'); > 接着读取 CSS 文件的内容到 $data 变量中,然后用正则式把域名给取出来。
> 因为这里考虑到很多图片文件用到了相对根路径,比方说 /img/1.gif 和 img/1.gif。
> 然后 CSS 原地址在 //www.jb51.cc/css/ 那么上面的两个文件位置是不同的。 > 第一个文件在 /upload/201109/20110926143903807.gif,因为它的路径用到了相对根路径。
> 而第二个在 /upload/201109/20110926143903169.gif,它的路径只是普通的相对路径。
<div class="codetitle"><a style="CURSOR: pointer" data="77143" class="copybut" id="copybut77143" onclick="doCopy('code77143')"> 代码如下:
<div class="codebody" id="code77143">
$url = '//www.jb51.cc/css/'; preg_match('/(.
\/\/.?)\//',$url,$host);
//这里用正则式把 //www.jb51.cc/ 给取出来,后端不要忘记加斜杠喔。
//.*? 是懒惰匹配,也就是能匹配得越少就匹配越少的
内容,这样就不会取过头了。
$host = $host[1];
if (!is_file('./img/'.$name[1])) {
copy($target,'./img/'.$name[1]);
}
> 5. 完整源
PHP $url = '//www.jb51.cc/css/';
$data = file_get_contents('abc.css');
preg_match('/(.*\/\/.*?)\//',$host);
$host = $host[1];
if (!is_dir('img')) { mkdir('img'); }
$regex = '/url\(\'{0,1}\)/';
preg_match_all($regex,$result);
foreach ($result[1] as $val) {
if (preg_match('/^http.*/',$val)) { $target=$host.$val; }
else { $target=$url.$val; }
echo $target."
\r\n";
preg_match('/.*\/(.*\.\D+)$/',$name);
if (!is_file('./img/'.$name[1])) {
copy($target,'./img/'.$name[1]);
}
}?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。