本文實例講述了PHP遍歷文件夾與文件類及處理類用法,非常具有實用價值。分享給大家供大家參考。具體方法如下:
FindFile.class.php類文件用于遍歷目錄文件,具體代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
<?php /** 遍歷文件夾及文件類 * Date: 2013-03-21 * Author: fdipzone * Ver: 1.0 */ class FindFile{ public $files = array (); // 存儲遍歷的文件 protected $maxdepth ; // 搜尋深度,0表示沒有限制 /* 遍歷文件及文件夾 * @param String $spath 文件夾路徑 * @param int $maxdepth 搜尋深度,默認搜尋全部 */ public function process( $spath , $maxdepth =0){ if (isset( $maxdepth ) && is_numeric ( $maxdepth ) && $maxdepth >0){ $this ->maxdepth = $maxdepth ; } else { $this ->maxdepth = 0; } $this ->files = array (); $this ->traversing( $spath ); // 遍歷 } /* 遍歷文件及文件夾 * @param String $spath 文件夾路徑 * @param int $depth 當前文件夾深度 */ private function traversing( $spath , $depth =1){ if ( $handle = opendir( $spath )){ while (( $file =readdir( $handle ))!==false){ if ( $file != '.' && $file != '..' ){ $curfile = $spath . '/' . $file ; if ( is_dir ( $curfile )){ // dir if ( $this ->maxdepth==0 || $depth < $this ->maxdepth){ // 判斷深度 $this ->traversing( $curfile , $depth +1); } } else { // file $this ->handle( $curfile ); } } } closedir ( $handle ); } } /** 處理文件方法 * @param String $file 文件路徑 */ protected function handle( $file ){ array_push ( $this ->files, $file ); } } ?> |
UnsetBom.class.php用于清除utf8+bom文件的bom,即頭三個字節 0xEF 0xBB 0xBF,繼承FindFile類,具體代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<?php /** 遍歷所有文件,清除utf8+bom 0xEF 0xBB 0xBF * Date: 2013-03-21 * Author: fdipzone * Ver: 1.0 */ class UnsetBom extends FindFile{ private $filetype = array (); // 需要處理的文件類型 // 初始化 public function __construct( $filetype = array ()){ if ( $filetype ){ $this -> filetype = $filetype ; } } /** 重寫FindFile handle方法 * @param String $file 文件路徑 */ protected function handle( $file ){ if ( $this ->check_ext( $file ) && $this ->check_utf8bom( $file )){ // utf8+bom $this ->clear_utf8bom( $file ); // clear array_push ( $this ->files, $file ); // save log } } /** 檢查文件是否utf8+bom * @param String $file 文件路徑 * @return boolean */ private function check_utf8bom( $file ){ $content = file_get_contents ( $file ); return ord( substr ( $content ,0,1))===0xEF && ord( substr ( $content ,1,1))===0xBB && ord( substr ( $content ,2,1))===0xBF; } /** 清除utf8+bom * @param String $file 文件路徑 */ private function clear_utf8bom( $file ){ $content = file_get_contents ( $file ); file_put_contents ( $file , substr ( $content ,3), true); // 去掉頭三個字節 } /** 檢查文件類型 * @param String $file 文件路徑 * @return boolean */ private function check_ext( $file ){ $file_ext = strtolower ( array_pop ( explode ( '.' , basename ( $file )))); if (in_array( $file_ext , $this -> filetype )){ return true; } else { return false; } } } ?> |
去除utf8 bom頭Demo遍歷文件示例:
1
2
3
4
5
6
7
8
9
10
11
|
<?php require ( 'FindFile.class.php' ); require ( 'UnsetBom.class.php' ); $folder = dirname( __FILE__ ); $obj = new UnsetBom( array ( 'php' , 'css' , 'js' )); // 文件類型 $obj ->process( $folder ); print_r( $obj ->files); ?> |
希望本文所述對大家PHP程序設計的學習有所幫助。