Как перечислить файлы и папку в каталоге (PHP)

Привет, я пытаюсь показать все файлы и папки в каталоге с php

например

Dir: system / infomation /

Папка – Пользователь

Файлы от пользователя – User1.txt

Файлы от пользователя – User2.txt

Файлы от пользователя – User3.txt

Файлы от пользователя – User4.txt

Папка – Игроки

Файлы от игроков – Player1.txt

Файлы от игроков – Player2.txt

Файлы от игроков – Player3.txt

Файлы от игроков – Player4.txt

Может кто-нибудь привести меня по правой улице, пожалуйста

Спасибо

PHP 5 имеет RecursiveDirectoryIterator .

В руководстве приведен пример:

 <?php $directory = '/system/infomation/'; $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)); while($it->valid()) { if (!$it->isDot()) { echo 'SubPathName: ' . $it->getSubPathName() . "\n"; echo 'SubPath: ' . $it->getSubPath() . "\n"; echo 'Key: ' . $it->key() . "\n\n"; } $it->next(); } ?> 

Изменить. Вот несколько более продвинутый пример (только слегка), который производит вывод, похожий на то, что вы хотите (т.е. имена папок, затем файлы).

 // Create recursive dir iterator which skips dot folders $dir = new RecursiveDirectoryIterator('./system/information', FilesystemIterator::SKIP_DOTS); // Flatten the recursive iterator, folders come before their files $it = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST); // Maximum depth is 1 level deeper than the base folder $it->setMaxDepth(1); // Basic loop displaying different messages based on file or folder foreach ($it as $fileinfo) { if ($fileinfo->isDir()) { printf("Folder - %s\n", $fileinfo->getFilename()); } elseif ($fileinfo->isFile()) { printf("File From %s - %s\n", $it->getSubPath(), $fileinfo->getFilename()); } } 

 //path to directory to scan $directory = "../data/team/"; //get all text files with a .txt extension. $texts = glob($directory . "*.txt"); //print each file name foreach($texts as $text) { echo $text; } 

СПИСОК ФАЙЛОВ В ПАПДКЕ – 1 решение

 <?php // open this directory $myDirectory = opendir("."); // get each entry while($entryName = readdir($myDirectory)) { $dirArray[] = $entryName; } // close directory closedir($myDirectory); // count elements in array $indexCount = count($dirArray); Print ("$indexCount files<br>\n"); // sort 'em sort($dirArray); // print 'em print("<TABLE border=1 cellpadding=5 cellspacing=0 class=whitelinks>\n"); print("<TR><TH>Filename</TH><th>Filetype</th><th>Filesize</th></TR>\n"); // loop through the array of files and print them all for($index=0; $index < $indexCount; $index++) { if (substr("$dirArray[$index]", 0, 1) != "."){ // don't list hidden files print("<TR><TD><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>"); print("<td>"); print(filetype($dirArray[$index])); print("</td>"); print("<td>"); print(filesize($dirArray[$index])); print("</td>"); print("</TR>\n"); } } print("</TABLE>\n"); ?> 

2 решение

 <?PHP # The current directory $directory = dir("./"); # If you want to turn on Extension Filter, then uncomment this: ### $allowed_ext = array(".sample", ".png", ".jpg", ".jpeg", ".txt", ".doc", ".xls"); ## Description of the soft: list_dir_files.php ## Major credits: phpDIRList 2.0 -(c)2005 Ulrich S. Kapp :: Systemberatung :: $do_link = TRUE; $sort_what = 0; //0- by name; 1 - by size; 2 - by date $sort_how = 0; //0 - ASCENDING; 1 - DESCENDING # # # function dir_list($dir){ $i=0; $dl = array(); if ($hd = opendir($dir)) { while ($sz = readdir($hd)) { if (preg_match("/^\./",$sz)==0) $dl[] = $sz;$i.=1; } closedir($hd); } asort($dl); return $dl; } if ($sort_how == 0) { function compare0($x, $y) { if ( $x[0] == $y[0] ) return 0; else if ( $x[0] < $y[0] ) return -1; else return 1; } function compare1($x, $y) { if ( $x[1] == $y[1] ) return 0; else if ( $x[1] < $y[1] ) return -1; else return 1; } function compare2($x, $y) { if ( $x[2] == $y[2] ) return 0; else if ( $x[2] < $y[2] ) return -1; else return 1; } }else{ function compare0($x, $y) { if ( $x[0] == $y[0] ) return 0; else if ( $x[0] < $y[0] ) return 1; else return -1; } function compare1($x, $y) { if ( $x[1] == $y[1] ) return 0; else if ( $x[1] < $y[1] ) return 1; else return -1; } function compare2($x, $y) { if ( $x[2] == $y[2] ) return 0; else if ( $x[2] < $y[2] ) return 1; else return -1; } } ################################################## # We get the information here ################################################## $i = 0; while($file=$directory->read()) { $file = strtolower($file); $ext = strrchr($file, '.'); if (isset($allowed_ext) && (!in_array($ext,$allowed_ext))) { // dump } else { $temp_info = stat($file); $new_array[$i][0] = $file; $new_array[$i][1] = $temp_info[7]; $new_array[$i][2] = $temp_info[9]; $new_array[$i][3] = date("F d, Y", $new_array[$i][2]); $i = $i + 1; } } $directory->close(); ################################################## # We sort the information here ################################################# switch ($sort_what) { case 0: usort($new_array, "compare0"); break; case 1: usort($new_array, "compare1"); break; case 2: usort($new_array, "compare2"); break; } ############################################################### # We display the infomation here ############################################################### $i2 = count($new_array); $i = 0; echo "<table border=1> <tr> <td width=150> File name</td> <td width=100> File Size</td> <td width=100>Last Modified</td> </tr>"; for ($i=0;$i<$i2;$i++) { if (!$do_link) { $line = "<tr><td align=right>" . $new_array[$i][0] . "</td><td align=right>" . number_format(($new_array[$i][1]/1024)) . "k"; $line = $line . "</td><td align=right>" . $new_array[$i][3] . "</td></tr>"; }else{ $line = '<tr><td align=right><A HREF="' . $new_array[$i][0] . '">' . $new_array[$i][0] . "</A></td><td align=right>"; $line = $line . number_format(($new_array[$i][1]/1024)) . "k" . "</td><td align=right>" . $new_array[$i][3] . "</td></tr>"; } echo $line; } echo "</table>"; ?> 

Вы можете использовать:

  foreach (new DirectoryIterator("./system/information/") as $fn) { print $fn->getFilename(); } 

Вам придется использовать его дважды для каждого субдира, Игроков и Пользователя.

используйте эту функцию http://www.codingforums.com/showthread.php?t=71882

 function getDirectory( $path = '.', $level = 0 ){ $ignore = array( 'cgi-bin', '.', '..' ); // Directories to ignore when listing output. Many hosts // will deny PHP access to the cgi-bin. $dh = @opendir( $path ); // Open the directory to the handle $dh while( false !== ( $file = readdir( $dh ) ) ){ // Loop through the directory if( !in_array( $file, $ignore ) ){ // Check that this file is not to be ignored $spaces = str_repeat( '&nbsp;', ( $level * 4 ) ); // Just to add spacing to the list, to better // show the directory tree. if( is_dir( "$path/$file" ) ){ // Its a directory, so we need to keep reading down... echo "<strong>$spaces $file</strong><br />"; getDirectory( "$path/$file", ($level+1) ); // Re-call this same function but on a new directory. // this is what makes function recursive. } else { echo "$spaces $file<br />"; // Just print out the filename } } } closedir( $dh ); // Close the directory handle } 

и вызовите функцию, подобную этой

 getDirectory( "." ); // Get the current directory getDirectory( "./files/includes" ); // Get contents of the "files/includes" folder 

Вы можете использовать функции Справочника: http://php.net/manual/en/book.dir.php

Простой пример из описания функции opendir () :

 <?php $dir_path = "/path/to/your/dir"; if (is_dir($dir_path)) { if ($dir_handler = opendir($dir_path)) { while (($file = readdir($dir_handler)) !== false) { echo "filename: $file : filetype: " . filetype($dir_path . $file) . "\n"; } closedir($dir_handler); } } ?> 

Используйте glob. Существует исчерпывающее руководство по открытию всех файлов из каталога : PHP: использование функционального программирования для перечисления файлов и каталогов

Используйте класс Dir или opendir() и readdir() в рекурсивной функции.

http://www.php.net/manual/en/class.dir.php

http://ch2.php.net/manual/en/function.opendir.php

http://ch2.php.net/manual/en/function.readdir.php

Я нашел в http://www.laughing-buddha.net/php/lib/dirlist/ функцию, которая возвращает массив, содержащий список содержимого каталога.

Также посмотрите на php.net http://es.php.net/manual/es/ref.filesystem.php, где вы найдете дополнительные функции для работы с файлами в php.

Посмотрите на создание простого каталога браузера с помощью php RecursiveDirectoryIterator

Кроме того, как вы упомянули, вы хотите перечислить, вы также можете посмотреть на некоторые готовые библиотеки, которые создают поиск файлов и папок, например:

Если у вас есть проблемы с доступом к пути, возможно, вам нужно поставить это:

 $root = $_SERVER['DOCUMENT_ROOT']; $path = "/cv/"; // Open the folder $dir_handle = @opendir($root . $path) or die("Unable to open $path");