• 根据css文件采集图片


      1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      2 <html xmlns="http://www.w3.org/1999/xhtml">
      3 <head>
      4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      5 <title>根据css文件采集图片</title>
      6 </head>
      7 <body>
      8 <?php
      9 class get_pic_from_css {
     10 
     11   var $path    = '.';
     12   var $match    = 'background:url((.*?))';
     13   var $url    = 'http://xxxx.com/web/Tpl/Home/Public';
     14   var $flag    = '..';
     15 //   var $absolute_address;    // 绝对地址
     16 //   var $relative_address;    // 相对地址
     17 
     18 //   function __construct(){
     19 //    
     20 //   }
     21 
     22   function work(){
     23     $array = $this->relative_to_absolute();
     24     echo "数组长度".count($array)."<hr>";
     25     foreach($array as $row){
     26       $local = $this->my_substr($row, '/images/', '.');
     27       $ext = substr($row,-4);
     28       $this->down_pic($row, $local.$ext);
     29     }
     30   }
     31 
     32   // 下载图片
     33   function down_pic($url_file, $local_file){
     34     if(file_exists($local_file)){
     35       echo $local_file."存在<br/>";
     36     }else{
     37       $contents = file_get_contents($url_file);
     38       $fp = fopen($local_file,"w+");
     39       fwrite($fp,$contents);
     40       fclose($fp);
     41       echo $url_file.'------------------ok<br/>';
     42     }
     43 
     44     print str_repeat(" ", 4096);
     45     ob_flush();
     46     flush();
     47   }
     48   // 截取字符串
     49   function my_substr($str,$start,$end){
     50     $arr = explode($start,$str);
     51     $arr = explode($end,$arr[1]);
     52     return $arr[0];
     53   }
     54 
     55   // 相对路径变成绝对路径
     56   function relative_to_absolute(){
     57     $array = $this->get_pic_to_array();
     58     $chage = array($this->flag => $this->url);
     59     foreach($array as $row){
     60       $array_new[] = strtr($row,$chage);
     61     }
     62     return $array_new;
     63   }
     64 
     65   // 所有匹配的结果保存到一个数组
     66   function get_pic_to_array(){
     67     $array = array();
     68     $csses = $this->get_css_files($this->path);
     69     foreach($csses as $css){
     70       $matches = $this->get_matches_from_css($css);
     71       $array = array_merge($array, $matches); 
     72     }
     73     // 去掉数组中重复的项目
     74     $array = array_unique($array);
     75     return $array;
     76   }
     77 
     78   // 浏览本文件夹所以css文件保存到数组
     79   function get_css_files($path){
     80     $handle=opendir($path);
     81     while ($file = readdir($handle)) {
     82       if(substr(strrchr($file, "."), 1) == "css"){
     83         $csses[] = $file;
     84       }
     85     }
     86     closedir($handle);
     87     return $csses;
     88   }
     89 
     90   // 浏览单独css文件匹配的背景保存到数组
     91   function get_matches_from_css($file){
     92     $html = file_get_contents($file);
     93     preg_match_all ('/'.$this->match.'/', $html, $matches);
     94     // $matches[0]为匹配到的全部 $matches[1]为匹配到的子项
     95     return $matches[1];
     96   }
     97 
     98 }
     99 
    100 set_time_limit(0);
    101 $go = new get_pic_from_css();
    102 $go->work();
    103 ?>
    104 </body>
    105 </html>
  • 相关阅读:
    以用户名注册来分析三种Action获取数据的方式
    Struts2中的OGNL详解 《转》
    Module 'null' not found异常解决办法
    struts标签<logic:iterate>的用法
    struts2的核心和工作原理 <转>
    jstl标签怎么实现分页中下一页
    forward 和redirect
    forward 和redirect的区别
    今天早上起来就想着要问问龙虎有圆通没
    昨天晚上回来弄了两个皮蛋吃
  • 原文地址:https://www.cnblogs.com/zhusanjie/p/3298930.html
Copyright © 2020-2023  润新知