仅获取目录中的文件夹名称,跳过点并忽略某些文件夹

Get only folder names in a directory, skipping dots and ignoring certain folders

我只需要获取目录中的文件夹名称。到目前为止,我发现 DirectoryIterator 很有用。但是我没有得到所需的文件夹名称。

$dir = new DirectoryIterator(dirname($directory));
foreach ($dir as $fileinfo) {

    if (!$fileinfo->isDot()) {
        var_dump($fileinfo->getFilename());
        if ($fileinfo->isDir()) {
        //echo $fileinfo->getFilename() . '<br>';
        }    
    }    
}

请参阅:我也想跳过点 (.) 和 (..) 同时能够忽略我选择的文件夹。

DirectoryIterator 让您获取文件名相对于目录的亲属关系,而不是绝对的,既不是相对于您进程的当前目录。连接 $directory$fileinfo->getFileName() 以获得正确的可用路径。

解决方法如下:

$path = 'PATH';

if ($handle = opendir($path)) {
    while (false !== ($file = readdir($handle))) {
        //skips dots  
        if ('.' === $file) continue;
        if ('..' === $file) continue;
        //ignore folders
        if ('FOLDER_TO_IGNORE' === $file) continue;

        //check if filename is a folder
        if (is_dir($file)){
        //DO SOMETHING WITH FOLDER ($file)
        }

    }
    closedir($handle);
}