🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
~~~ /** * 列出目录下所有文件 * * @param string $path 路径 * @param string $exts 扩展名 * @param array $list 增加的文件列表 * @return array 所有满足条件的文件 */ function dir_path($path) { $path = str_replace('\\', '/', $path); if (substr($path, -1) != '/') $path = $path . '/'; return $path; } /** * 列出目录下的所有文件 * * @param str $path 目录 * @param str $exts 后缀 * @param array $list 路径数组 * @return array 返回路径数组 */ function dir_list($path, $exts = '', $list = array()) { $path = self::dir_path($path); $files = glob($path . '*'); foreach($files as $v) { if (!$exts || preg_match("/\.($exts)/i", $v)) { $list[] = $v; if (is_dir($v)) { $list = self::dir_list($v, $exts, $list); } } } return $list; } ~~~ ***** ~~~ /** * 替代scan_dir的方法 * @param string $pattern 检索模式 搜索模式 *.txt,*.doc; (同glog方法) * @param int $flags * @param $pattern * @return array */ function cmf_scan_dir($pattern, $flags = null) { $files = glob($pattern, $flags); if (empty($files)) { $files = []; } else { $files = array_map('basename', $files); } return $files; } ~~~ ~~~ /** * 获取某个目录下所有子目录 * @param $dir * @return array */ function cmf_sub_dirs($dir) { $dir = ltrim($dir, "/"); $dirs = []; $subDirs = cmf_scan_dir("$dir/*", GLOB_ONLYDIR); if (!empty($subDirs)) { foreach ($subDirs as $subDir) { $subDir = "$dir/$subDir"; array_push($dirs, $subDir); $subDirSubDirs = cmf_sub_dirs($subDir); if (!empty($subDirSubDirs)) { $dirs = array_merge($dirs, $subDirSubDirs); } } } return $dirs; } ~~~