Sortierte Ausgabe von Dateien
Sortierte Ausgabe von Dateien
Der Befehl readdir() von PHP listet den kompletten Inhalt eines Verzeichnisses auf. Auch wenn es in bestimmten Implementierungen von PHP so aussieht, als wäre die Ausgabe entsprechend der "mtime" (Zeit der letzten Modiffikation) sortiert, so gibt es hierbei laut Sprachbeschreibung keine Regel. Man sollte also keinesfalls eine möglicherweise in einer bestimmen Implementierung vorhandene Eigenschaft benutzen. Bei einem Serverwechsel wäre dann zum Beispiel die Sortierreihenfolge anders.
Die Funktion filenames_in_directory($dir, $criteria, &$res, $order="ascending"), die im folgenden aufgelistet ist, gibt ein Array mit den Dateinamen (also nur die Dateinamen und keine Unterverzeichnisse) zurück. Ist der Parameter $order auf ascending gesetzt, werden die Namen in aufsteigender Ordnung sortiert, ansonsten werden sie in absteigender (descending) Sortierung zurückgeliefert.
Mit dem Parameter $criteria kann man bestimmen, ob man eine zeitliche Sortierung, also $criteria="time", oder eine alphabetische Sortierung, also $criteria="alpha", wünscht.
| function filenames_in_directory($dir, $criteria, &$res, $order="ascending") { $count =0; $handle=opendir($dir); while (($file = readdir($handle))!==false) { /* possible return values for filetype(): fifo, char, dir, block, link, file, unknown */ if (filetype("$dir/$file")=="file") { // no subdirectories e.g. // "if" makes sure that no subdirectories // and the directory "." and ".." are listed if ($criteria == "time") { $file_time = filemtime("$dir/$file"); // time of last modification $tfilenames[$file] = $file_time; } else if ($criteria == "alpha") { // alphabetical listing. $filenames[$count] = $file; } $count++; } } closedir($handle); $i = 0; |
Ein Aufruf des obigen Skriptes sieht wie folgt aus:
| $number_of_filenames_in_dir = filenames_in_directory($path, "time", &$files, "ascending"); while(list($key, $file) = each($files)){ echo "$file\n"; } |
Dabei werden alle Dateinamen des Unterverzeichnisses $path in zeitlich aufsteigender Reihenfolge ausgedruckt.
hat dir dieser Artikel gefallen?
Zu diesem Artikel wurden noch keine Kommentare geschrieben.
Leave a comment
Du musst angemeldet sein, um einen Kommentar abzugeben.
Noch keine Trackbacks.










