Как вывести список всех файлов каталога и его подкаталогов в php?

1

Как найти все имена файлов каталога или папки и ее подкаталогов или подпапок. Я использую scandir(), но он возвращает имена файлов и подкаталогов только из корневого каталога. Если у кого-нибудь есть решение, пожалуйста, предложите.

<?php
    $dir    = 'mydir/';
    $files  = scandir($dir);
?> 
Теги:
file

4 ответа

0
Лучший ответ

Я нашел решение. Я создал скрипт, используя это, мы можем получить или перечислить все файлы каталога и его подкаталогов. Его работа прекрасна. Там mydir предполагается как путь к каталогу

function listDirFiles($dir){
    foreach(glob("$dir/*") as $ff){          
            is_dir($ff) ? listDirFiles($ff) : $GLOBALS['a'][] = basename($ff);        
    }
}

listDirFiles('mydir');
echo "<pre>", print_r($GLOBALS['a']), "</pre>";
0

Ответ здесь может дать вам больше света.

Что бы я сделал (как в ответе), запустил цикл foreach для каждого каталога, а затем перечислил в него файлы в каталогах. В основном просто промыть и повторить. PHP выполняет scandir() аналогичную команде ls в Linux.

0

Попробуй это

  $filelist = array();
  if ($handle = opendir(".")) 
  {
    while ($entry = readdir($handle)) {
        if (is_file($entry)) {
            $filelist[] = $entry;
        }
    }
  echo "<pre>";
print_r($filelist);
closedir($handle);
}
  • 0
    Это также список подкаталогов имени. Я просто хочу только имена файлов.
  • 0
    @AmitRajput я обновил ответ
Показать ещё 2 комментария
0

Это то, что я использую в своем проекте, это будет только возвращать файл, но не папку, а рекурсивно.

$dir = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("mydir/") );
$dir->setFlags(4096 | 8192);

foreach ($dir as $value) {
    echo $dir->getSubPathname();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню