![]() |
[PHP] Dateibrowser sortiet
Hi,
ich versuche gerade einen Dateibrowser zu realisieren. Dazu habe ich mir folgende Funktion geschrieben:
Code:
Die Ausgabe ist aber ein wenig chaotisch:
<?php
function listdir($dir) { // subfunction begin: ls_recursive function ls_recursive($dir) { if (is_dir($dir)) { $dirhandle = opendir($dir); while (($file = readdir($dirhandle)) !== false) { if (($file != ".") && ($file != "..")) { $currentfile = $dir."/".$file; if(is_dir($currentfile)) { print "[b]Verzeichnis:[/b] ".realpath($currentfile)." "; } else { echo realpath($currentfile)." "; } } } } } // subfunction end ls_recursive($dir); } $dir="/"; listdir(getcwd().$dir); ?> Ausgabe D:\public_html\CSD-Software\.htaccess D:\public_html\CSD-Software\about_us.php D:\public_html\CSD-Software\comments.php D:\public_html\CSD-Software\contact.php D:\public_html\CSD-Software\header.gif D:\public_html\CSD-Software\impressum.php D:\public_html\CSD-Software\index.php D:\public_html\CSD-Software\stylesheet.css Verzeichnis: D:\public_html\CSD-Software\other Verzeichnis: D:\public_html\CSD-Software\admin Verzeichnis: D:\public_html\CSD-Software\downloads Verzeichnis: D:\public_html\CSD-Software\errors Verzeichnis: D:\public_html\CSD-Software\images Verzeichnis: D:\public_html\CSD-Software\includes Verzeichnis: D:\public_html\CSD-Software\projekte Verzeichnis: D:\public_html\CSD-Software\service Verzeichnis: D:\public_html\CSD-Software\stuff Verzeichnis: D:\public_html\CSD-Software\tutorials Verzeichnis: D:\public_html\CSD-Software\new D:\public_html\CSD-Software\TEST.php Nun meine Frage: wie kann ich diese Ausgabe einigermaßen ordnen? Also so, dass Verzeichnisse am Anfang stehen und diese und Dateien nach Alphabet geordnet werden. Chris |
Re: [PHP] Dateibrowser sortiet
Also, zuerst packst du alle Daten in ein Array. So, nun kannst du dieses sortieren (PHP hat ja genug Funktionen dazu), und die Ausgabe ist alphabetisch.
Willst du nun Ordner und Dateien seperat anordnen, brauchst du mehr Informationen als nur den Namen. Was sich anbieten würde, wäre folgende Struktur: Ein Array, dass assoziative Arrays mit den Bezeichnern name und directory enthält. Dein Code müsste also etwa so aussehen:
Code:
Wobei $filelist das Array ist.
[...]
$filelist[]['name'] = realpath($currentfile); $filelist[]['directory'] = is_dir($currentfile); [...] Nun musst du zum Sortieren folgendes tun: Entweder einen eigenen Sortieralgo schreiben oder usort benutzen, dort wird zum Vergleichen der Elemente eine eigene Funktion benutzt. Hier gilt: Buchstabe mit kleinerem ASCII-Wert ist kleiner als Buchstabe mit größerem ASCII-Wert, abr Verzeichnis ist immer kleiner als Datei. Also so (nicht getestet):
Code:
function cmp_values($a, $b)
{ if ($a['name'] == $b['name') return 0; if ($a['directory']) if ($b['directory']) return ($a['name'] > $b['name']) ? -1 : 1; else return -1; //a ist "größer" else return ($a['name'] > $b['name']) ? -1 : 1; } Ohne Gewähr, probier es mal aus. |
Re: [PHP] Dateibrowser sortiet
Hi Chewie,
so ähnlich habe ich es gerade gemacht: ich habe nur zwei Arrays genommen und die Compare-Funktion Case-Insenstiv gestaltet. Vielen Dank, jetzt funktioniert es! Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz