遍历文件夹下所有文件,一般可以使用opendir 与 readdir 方法来遍历。
例子:找出指定目录下的所有php文件(不搜寻子文件夹),代码如下:
<?php$path = dirname(__FILE__);$result = traversing($path);print_r($result);function traversing($path){ $result = array(); if($handle = opendir($path)){ while($file=readdir($handle)){ if($file!='.' && $file!='..'){ if(strtolower(substr($file, -4))=='.php'){ array_push($result, $file); } } } } return $result;}?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
如使用glob方法来遍历则可以简化代码
<?php$path = dirname(__FILE__);$result = glob($path.'/*.php');print_r($result);?>
- 1
- 2
- 3
- 4
- 5
注意,glob返回的会是path+搜寻结果的路径,例如path=’/home/fdipzone’,以上例子则返回
Array( [0] => /home/fdipzone/a.php [1] => /home/fdipzone/b.php [2] => /home/fdipzone/c.php)
- 1
- 2
- 3
- 4
- 5
- 6
这是与opendir,readdir返回的结果不同的地方。
如果只是遍历当前目录。可以改成这样:glob(‘*.php’);
glob语法说明:
array glob ( string $pattern [, int $flags = 0 ] )
- 1
glob() 函数依照 libc glob() 函数使用的规则寻找所有与 pattern 匹配的文件路径,类似于一般 shells 所用的规则一样。不进行缩写扩展或参数替代。glob使用正则匹配路径功能强大。
flags 有效标记有:
GLOB_MARK - 在每个返回的项目中加一个斜线
GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
GLOB_NOESCAPE - 反斜线不转义元字符
GLOB_BRACE - 扩充 {a,b,c} 来匹配 ‘a’,’b’ 或 ‘c’
GLOB_ONLYDIR - 仅返回与模式匹配的目录项
GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误
例子:使用glob方法遍历指定文件夹(包括子文件夹)下所有php文件
<?php$path = dirname(__FILE__);$result = array();traversing($path, $result);print_r($result);function traversing($path, &$result){ $curr = glob($path.'/*'); if($curr){ foreach($curr as $f){ if(is_dir($f)){ array_push($result, $f); traversing($f, $result); }elseif(strtolower(substr($f, -4))=='.php'){ array_push($result, $f); } } }}?>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow