获取目录下所有子目录的文件夹列表(递归函数返回的是路径的全称)
应用案例
点击复制代码 PHP
$url="D:/wwwroot/78moban.com/ui/";
$list=RemoveMoreSpaces($url);
print_r($list);
输出结果为:
Array ( [0] => D:/wwwroot/78moban.com/ui/code/list [1] => D:/wwwroot/78moban.com/ui/code [2] => D:/wwwroot/78moban.com/ui/css [3] => D:/wwwroot/78moban.com/ui/img [4] => D:/wwwroot/78moban.com/ui/js [5] => D:/wwwroot/78moban.com/ui/tinymce/langs [6] => D:/wwwroot/78moban.com/ui/tinymce/skins [7] => D:/wwwroot/78moban.com/ui/tinymce )
函数
点击复制代码 PHP
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;
}