PHP 获取指定文件夹下所有文件

用来获取文件夹下所有文件,可以指定文件匹配规则,以及递归文件夹的深度

返回数据是包含所有文件的路径的数组

具体函数如下

/**
 * 递归获取所有文件
 *
 * @param string $path             文件路径
 * @param string $allowFiles     匹配文件名的正则表达式 (默认为空 全部文件)
 * @param number $depth         递归深度, 默认 1
 * @return array                  所有文件
**/
function getfiles($path, $allowFiles = '', $depth = 1, $substart = 0, &$files = array()){
    $depth--;
    $path = realpath($path) . '/';
    $substart = $substart ? $substart : strlen($path);

    if (!is_dir($path)){
        return false;
    }

    if($handle = opendir($path)){
        while (false !== ($file = readdir($handle))) {
            if ($file != '.' && $file != '..') {
                $path2 = $path . $file;
                if (is_dir($path2) && $depth > 0){
                    getfiles($path2, $allowFiles, $depth, $substart, $files);
                } elseif (empty($allowFiles) || preg_match($allowFiles, $file)) {
                    $files[] = substr($path2, $substart);
                }
            }
        }
    }
    sort($files);
    return $files;
}

调用示例

// 获取当前目录 下所有文件 递归文件夹深度 3
print_r(getfiles(__DIR__, '', 3));

// 获取当前目录下的 jpg 与 png 图片
print_r(getfiles(__DIR__, '#\.(jpe?g|png)$#', 3));

Post Author: admin