php获取目录下文件夹列表(递归)php
php获取目录下文件夹列表(递归)...
/** * 获取目录下文件夹列表(递归). * * @param string $dir 目录 * * @return array 文件夹列表(递归函数返回的是路径的全称,和非递归返回的有区别) */ function GetDirsInDir_Recursive($dir) { $dirs = array(); if (!file_exists($dir)) { return array(); } if (!is_dir($dir)) { return array(); } $dir = str_replace('\\', '/', $dir); if (substr($dir, -1) !== '/') { $dir .= '/'; } if (function_exists('scandir')) { foreach (scandir($dir, 0) as $d) { if (is_dir($dir . $d)) { if (($d != '.') && ($d != '..')) { $array = GetDirsInDir($dir . $d); if (count($array) > 0) { foreach ($array as $key => $value) { $dirs[] = $dir . $d . '/' . $value; } } $dirs[] = $dir . $d; } } } } else { $handle = opendir($dir); if ($handle) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { if (is_dir($dir . $file)) { $array = GetDirsInDir($dir . $file); //此方法在下面,请往下看 if (count($array) > 0) { foreach ($array as $key => $value) { $dirs[] = $dir . $file . '/' . $value; } } $dirs[] = $dir . $file; } } } closedir($handle); } } return $dirs; } /** * 获取当前目录下文件夹列表. * * @param string $dir 目录 * * @return array 文件夹列表 */ function GetDirsInDir($dir) { $dirs = array(); if (!file_exists($dir)) { return array(); } if (!is_dir($dir)) { return array(); } $dir = str_replace('\\', '/', $dir); if (substr($dir, -1) !== '/') { $dir .= '/'; } // 此处的scandir虽然是PHP 5就已加入的内容,但必须加上兼容处理 // 部分一键安装包的早期版本对其进行了禁用 // 这一禁用对安全没有任何帮助,推测是早期互联网流传下来的“安全秘笈”。 // @see: https://github.com/licess/lnmp/commit/bd34d5c803308afdac61626018e4168716d089ae#diff-6282e7667da1e2fc683bed06f87f74c1 if (function_exists('scandir')) { foreach (scandir($dir, 0) as $d) { if (is_dir($dir . $d)) { if (($d != '.') && ($d != '..')) { $dirs[] = $d; } } } } else { $handle = opendir($dir); if ($handle) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { if (is_dir($dir . $file)) { $dirs[] = $file; } } } closedir($handle); } } return $dirs; }
最新评论
热门推荐
我要评论