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>