当前位置: 代码迷 >> HTML/CSS >> 网站css内图片上载脚本
  详细解决方案

网站css内图片上载脚本

热度:135   发布时间:2012-12-22 12:05:06.0
网站css内图片下载脚本
觉得功能太烂BUG太多的,想加以改进的朋友,可以下载下面的压缩包进行修改补充,这次我加了足够的注释,方便大家阅读
解压之后把整个文件夹(saveimg1.4)放在www目录下通过浏览器访问http://localhost/saveimg1.4/ 即可使用 saveimg1.4.rar (5 K) 下载百度首页外链式css(http://su.bdimg.com/static/superpage/css/index_min_0ffaafc0.css)为例



--------------------------已修正--------------------------

2012.11.29

    代码简化之判断css文件所在的文件夹目录
        ############################
        之前的代码为:
        ############################
        //$url="http://192.168.190.47/phpwind/images/pw_core.css?20111111";
        function getbaseurl($url){
            $a=ltrim($url,'http://');
            $b=explode('/',$a);
            array_pop($b);
            $c=implode('/',$b);
            $baseurl='http://'.$c.'/';
            return $baseurl;
        }
        ############################
    去掉之前用的切割组合,使用系统默认函数dirname()
    echo dirname("http://192.168.190.47/phpwind/images/down.png");
    //输出结果为:“http://192.168.190.47/phpwind/images”

2012.11.30

    1.bug修复 => 修复即使文件下载为空都提示下载成功的错误。
    2.简化下载代码,也许底层执行过程是一样的,只是php代码减少了一点。

    --------------------------原代码--------------------------
    ob_start();
    readfile($url);
    $obj=ob_get_contents();
    ob_end_clean();
    $fp2=fopen($filename,"w");
    fwrite($fp2,$obj);
    fclose($fp2);
    echo $url.'<font color="green">下载成功</font><br/>';
    --------------------------修改为--------------------------
    $b=file_get_contents($url);
    $c=file_put_contents($filename,$b);
    if($c!=0){
        echo $url.'<font color="green">下载成功</font><br/>';
    }else{
        echo $url.'<font color="red">下载失败</font><br/>';
    }

2012.12.03

    css中的图片地址BUG修复
        今天在采集新浪的某个页面的时候发现其中的css图片的地址采用的是url(/images/xx.jpg)这样的格式
        而不是url(./images/xx.jpg)
        也不是url(images/xx.jpg)
        这样这个图片的地址就是www_sian.cn/images_xx_jpg
        而非www_sian.cn/css/images/xx_jp_g(假设css文件放在了www.sian.cn/css目录下)
        这样在获去了css中的图片地址之后则需要做一个正则匹配

        下面需要考虑图片地址在url的引用方法
        1    images/xxx.jpg
        2  ./images/xxx.jpg
        3 ../images/xxx.jpg
        4   /images/xxx.jpg

        $check=preg_match('/^\//',$z);//这里$z代表url()中的图片地址的字符串
        if($check==1){
            echo 'YES';//是第四种情况
        }else{
            echo 'NO';//不是第四种情况
        }

2012.12.08

    获取css中图片地址的方法修改
        可能最开始想的是直接取出css中的url()整个元素,所以一直向正则匹配那边在想,使用的是$arr=preg_split('/url\(/',$content);
        既然没有利用到正则的优势,似乎使用$arr=explode('url(',$content)效率要高一些?

2012.12.08

    1.css文件中url图片地址地址修复
        坑爹的百度贴吧居然使用了background:url(http://tb2.bdstatic.com/tb/style/chat/img/new.gif)这样的方法
        只能再多加一个判断了
        1    images/xxx.jpg
        2  ./images/xxx.jpg
        3 ../images/xxx.jpg
        4   /images/xxx.jpg
        5    http://
        $check=preg_match('/^http/',$z);
        if($check==1){
            //直接保存图片地址
        }else{
            $check2=preg_match('/^\//',$z);//这里$z代表url()中的图片地址的字符串
            if($check2==1){
                echo 'YES';//是第四种情况
            }else{
                echo 'NO';//不是第四种情况
            }
        }

--------------------------未解决--------------------------

新浪博客、新浪微博的css文件保存之后是乱码,我能想到的就是使用file_get_contents( )和file_put_contents( )来实现文件下载出现了问题。


  相关解决方案