
17735
10.06.2007, aktualisiert am 11.06.2007
Dateien auslesen und sortieren
Hallo,
auf folgende Weise lese ich mit PHP den Inhalt eines Verzeichnisses aus:
Auf meinem lokalen XAMPP-Testsystem unter Windows klappt das auch wunderbar - wenn ich es beim Dienstleister einsetze, der Debian Linux verwendet, funktioniert das Skript zwar auch, es sortiert die Dateien dann aber nicht alphatetisch, sondern nach dem Änderungsdatum, so dass neu hochgeladene Dateien ganz unten stehen, obwohl sie vom Dateinamen und der alphabetischen Reihenfolge vielleicht viel höher stehen sollten.
Wie kann ich den Inhalt des Verzeichnisses beim Auslesen nach dem Namen ordnen?
Gruß,
Ahnenforscher
auf folgende Weise lese ich mit PHP den Inhalt eines Verzeichnisses aus:
$pfad = "data";
$dirhandle = opendir($pfad);
while($file = readdir($dirhandle)) {
if($file != "." AND $file != ".." AND $file != ".htaccess") {
$filename = $file;
$filesize = round(filesize("$pfad/$file") / 1024);
if($filesize == 0) { $filesize = 1; }
echo "<a href=\"$pfad/$filename\">$filename $filesize KB</a>";
}
}
closedir($dirhandle);
Auf meinem lokalen XAMPP-Testsystem unter Windows klappt das auch wunderbar - wenn ich es beim Dienstleister einsetze, der Debian Linux verwendet, funktioniert das Skript zwar auch, es sortiert die Dateien dann aber nicht alphatetisch, sondern nach dem Änderungsdatum, so dass neu hochgeladene Dateien ganz unten stehen, obwohl sie vom Dateinamen und der alphabetischen Reihenfolge vielleicht viel höher stehen sollten.
Wie kann ich den Inhalt des Verzeichnisses beim Auslesen nach dem Namen ordnen?
Gruß,
Ahnenforscher
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 60986
Url: https://administrator.de/forum/dateien-auslesen-und-sortieren-60986.html
Ausgedruckt am: 22.04.2025 um 05:04 Uhr
5 Kommentare
Neuester Kommentar
@17735
Hi,
dann speichere die gefundenen Dateien in ein Array,
und lass dieses sortieren.
Hi,
dann speichere die gefundenen Dateien in ein Array,
und lass dieses sortieren.
$pfad = ".";
$dirhandle = opendir($pfad);
while($file = readdir($dirhandle)) {
if($file != "." AND $file != ".." AND $file != ".htaccess")) {
$filename = $file;
$filesize = round(filesize("$pfad/$file") / 1024);
if($filesize == 0) { $filesize = 1; }
// Dateien in ein Array ablegen
$file_array=array($filename,$filesize);
}
}
closedir($dirhandle);
// Funktion mit Sortierkriterien,
// wird von usort benötigt
function cmp($a, $b) {
$index = 0; // hier kann man den index aendern
if ($a[$index] == $b[$index]) return 0;
return ($a[$index] > $b[$index])?1:-1;
}
// Die Funktion usort bekommt das Array und
// die zuvor definierte Funktion als Parameter
usort ($file_array, 'cmp');
foreach($file_array as $file){
echo "<a href=\"$pfad/$file\">$file $file[1] KB</a><br>";
}
@17735
Hi,
... ich denke mal, das würde 'ne ziemlich aufwändige Sache, da im Ascii-Code die Großbuchstaben
ja nun mal "kleiner" sind als die Kleinbuchstaben. Ich lege Dateien grundsätzlich in Kleinbuchstaben
an, da stellt sich das Problem erst garnicht.
Ach, und bevor jemand auf die Idee kommt: "Wandel doch alles in Kleinbuchstaben um, wenn
das Array gefüllt wird", also $file_array=array(strtolower($filename),$filesize);,
dann wird zwar alles richtig sortiert angezeigt, aber die Links, die du ausgibst, funktionieren
nicht mehr.
Gruß
Günni
Hi,
Meine letzte Frage wäre jetzt noch: Funktioniert das auch ohne die Berücksichtigung von Groß/Kleinschreibung?
Unter Linux werden bei dieser Vorgehensweise nämlich zuerst die Dateien, die mit einem Großbuchstaben beginnen
sortiert und dann die, die mit einem Kleinbuchstaben beginnen.
Unter Linux werden bei dieser Vorgehensweise nämlich zuerst die Dateien, die mit einem Großbuchstaben beginnen
sortiert und dann die, die mit einem Kleinbuchstaben beginnen.
... ich denke mal, das würde 'ne ziemlich aufwändige Sache, da im Ascii-Code die Großbuchstaben
ja nun mal "kleiner" sind als die Kleinbuchstaben. Ich lege Dateien grundsätzlich in Kleinbuchstaben
an, da stellt sich das Problem erst garnicht.
Ach, und bevor jemand auf die Idee kommt: "Wandel doch alles in Kleinbuchstaben um, wenn
das Array gefüllt wird", also $file_array=array(strtolower($filename),$filesize);,
dann wird zwar alles richtig sortiert angezeigt, aber die Links, die du ausgibst, funktionieren
nicht mehr.
Gruß
Günni