【问题标题】:Browse directory recursively and get files name递归浏览目录并获取文件名
【发布时间】:2016-08-28 15:12:08
【问题描述】:

我必须做一个 php 脚本来浏览带有子目录的目录。 对于每个子目录(可能还有子子目录),我必须获取文件名和他的父目录。

请问您有一个简单的解决方案吗? 谢谢

【问题讨论】:

    标签: php


    【解决方案1】:

    由于我也必须为我的网站创建相同的功能,因此我将发布我的功能作为参考。

    function recursiveFileSearch($path, $searchmask = "*") {
        $path = rtrim($path, '/');
    
        $files = array();
        if(is_array($searchmask)) {
            for($i = 0; $i < count($searchmask); $i++) {
                $files = array_merge($files, glob($path.'/'.$searchmask[$i]));
            }
            sort($files);
        } else {
            $files = glob($path.'/'.$searchmask);
        }
    
    
        $dirs = glob($path.'/*', GLOB_ONLYDIR);
        foreach($dirs as $dir) {
            if(is_dir($dir)) {
                $files = array_merge($files, recursiveFileSearch($dir, $searchmask));
            }
        }
    
        sort($files);
        return $files;
    }
    

    【讨论】:

    • 谢谢!我会试试这个解决方案!
    【解决方案2】:

    我不是 100% 确定你在问什么,但如果你看一下 scandir documentation,第一条评论有一个非常有用的递归扫描功能。

    <?php 
    function dirToArray($dir) { 
    
          $result = array(); 
    
          $cdir = scandir($dir); 
          foreach ($cdir as $key => $value) 
          { 
             if (!in_array($value,array(".",".."))) 
             { 
                if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) 
                { 
                   $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value); 
                } 
                else 
                { 
                   $result[] = $value; 
                } 
             } 
          } 
    
          return $result; 
       } 
    ?> 
    

    结果将具有以下格式。

    Array 
    ( 
      [subdir1] => Array 
      ( 
         [0] => file1.txt 
         [subsubdir] => Array 
         ( 
            [0] => file2.txt 
            [1] => file3.txt 
         ) 
      ) 
      [subdir2] => Array 
      ( 
       [0] => file4.txt 
      } 
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-04
      • 2013-07-05
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 2018-03-11
      • 2014-07-12
      • 2017-05-18
      相关资源
      最近更新 更多