Sortierte Liste aller Dateien in einem Verzeichnis – PHP-Funktion
Folgende PHP-Funktion erzeugt ein Array mit allen Dateinamen von einem oder mehreren Verzeichnis/sen. Die Liste wird aufsteigend oder absteigend sortiert zurückgegeben. Der Sortieralgorithmus lässt sich durch sort_flags einstellen.
/**
*
* @author Vitus Lehner
* @version 2011-11-28
* @param $dirs string|array Directory or array of directories that will be scanned.
* @param $order_by string Orders the file list ASC or DESC. Default: ASC
* @param $sort_flag int Sorting behaviour. See sort_flags http://de.php.net/manual/en/function.sort.php. Default: SORT_STRING
* @return array Ordered list of files of given directory/ies.
*
*/
function scan_dir_files ( $dirs, $order_by = 'ASC', $sort_flag = SORT_STRING ) {
$files = array ( );
if ( is_array ( $dirs ) ) {
foreach ( $dirs as $dir ) {
$files = array_merge ( $files, scan_dir_files ( $dir ) );
}
} else {
$dir = scandir ( $dirs );
foreach ( $dir as $file ) {
if ( is_file ( $dirs . '/' . $file ) ) {
$files[] = $file;
}
}
}
if ( $order_by === 'DESC' ) {
rsort ( $files, $sort_flag );
} else {
sort ( $files, $sort_flag );
}
return $files;
}
Beispiele:
<?php
foreach(scan_dir_files('./ordner') as $datei){
echo "$datei\r\n";
}
?>
<?php
$ordner = array('ordner1', 'ordner2');
$dateien = scan_dir_files($ordner, 'DESC', SORT_REGULAR);
foreach($dateien as $datei){
echo "$datei\r\n";
}
?>
Dieser Artikel wurde vertaggt mit dateien, funktion, liste, php, sortiert, verzeichnis.
Kategorien: Funktionen, PHP
Hat Ihnen dieser Artikel gefallen? - Dann abonnieren Sie vlblog um über neue Themen rund ums Web informiert zu werden.
Du könntest noch “Aktuelles Verzeichnis” (.) und “Tieferes Verzeichnis” (..) herausfiltern – die brauch man immerhin nicht.
Ansonsten eine schöne Funktion.
Grüße,
Nico
Hallo Nico,
die werden im Prnzip herausgefiltert, als mit is_file() geprüft wird, ob es sich bei den von scandir() gelieferten Pfaden um Dateien handelt.
Gruß