【问题标题】:Get only folder names in a directory, skipping dots and ignoring certain folders仅获取目录中的文件夹名称,跳过点并忽略某些文件夹
【发布时间】:2016-01-23 09:46:57
【问题描述】:

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

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

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

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

【问题讨论】:

  • 没有!$fileinfo-&gt;isDot() 已经跳过... ??
  • @Andrew 是的,那部分是故意的。这是我解决方案的一部分。然而,总体而言,它似乎不起作用。无论如何,我在下面提出了一个替代解决方案。

标签: php iterator directory-structure


【解决方案1】:

DirectoryIterator 让您获得相对于目录的文件名,而不是绝对的,也不是相对于您的进程的当前目录。连接$directory$fileinfo-&gt;getFileName() 以获得正确的可用路径。

【讨论】:

    【解决方案2】:

    这里有一个解决方案:

    $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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 2011-06-20
      • 1970-01-01
      相关资源
      最近更新 更多