2016-08-28 3 views
-4

Мне нужно сделать php-скрипт, который просматривает каталог с подкаталогом. Для каждого подкаталога (и, возможно, под-подкаталога), мне нужно получить имя файла и его родительские каталоги.Обзор каталога рекурсивно и получить имя файла

У вас есть простое решение для этого? Thanks

ответ

3

Поскольку мне также нужно было создать ту же функциональность для моего веб-сайта, я отправлю свою функцию в качестве ссылки.

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; 
} 
+0

Спасибо! Я попробую это решение! – WWWWWWWWWP

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 
    } 
) 
+0

@HurricaneDevelopment благодарит мужчину! :) – WWWWWWWWWP

Смежные вопросы