本文实例讲述了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程序设计的学习有所帮助。