php使用open_dir()函数动态打开多级目录

时间:2016-04-27 18:31:23

标签: php opendir

我接管了这个网站进行管理。前开发人员使用opendir()在获取文件夹中的文件之前只打开一个级别。我想在最终文件之前创建多级文件夹。我在服务器上创建了子文件夹,但是我需要修改代码以将子文件夹动态识别为文件夹而不是文件。

 if ($handle = opendir("parentfolder/".$pageid.'/')) {
        $list = array();
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
                $list[] = "$file\n";
            }
        }
        rsort($list);
        $clength =  count($list);
        for($x = 0; $x <$clength; $x++){
            $pubFolders .= "<a href='".$maindomain."/reports/".$list[$x]."' class='imagefolders'><img src='".$maindomain."/images/icons/image.png' alt=''/><br>".$list[$x]."</a>";
        } 
        $data = $data.$pubFolders;
        closedir($handle);
    }

1 个答案:

答案 0 :(得分:0)

glob()使用GLOB_ONLYDIR;一些示例函数如下:

function findDirectories($rootPath) {
    $directories = array();
    foreach (glob($rootPath . "/*", GLOB_ONLYDIR) as $directory) {
        $directories[] = $directory;
    }
    return $directories;
}

function findFiles($rootPath, $extension) {
    $files = array();
    foreach (glob($rootPath . "/*.$extension") as $file) {
        $files[] = $file;
    }
    return $files;
}

function findFilesRecursive($rootPath,$extension) {
    $files = findFiles($rootPath,$extension);
    $directories = findDirectories($rootPath);
    if (!empty($directories)) {
        foreach ($directories as $key=>$directory) {
            $foundFiles = findFilesRecursive($directory,$extension);
            foreach ($foundFiles as $foundFile) {
                $files[] = $foundFile;
            }
        }
    }
    return $files;
}

如果您不关心定义特定扩展程序,只需将*作为$extension参数传递。