Mit scandir sortieren

rernanded

Erfahrenes Mitglied
Hallo

ich versuche gerade Bilddateinamen aus einem Ordner zu sortieren.
Mit dem Code geht es aber anscheinend nicht wie gewünscht.

PHP:
$dir = "testlist";
$files = scandir($dir, 2);

foreach($files as $file)
{
    if($file != "." && $file != "..")
    echo $file."<br />";
}
Ich erhalte:

_AfG.png
a.png
_Achim_P.png
XXXAfG_Bayern.png
123AfG_FffNRW.png
ABeer.png
AchimKessler.png
987AfG_FffNRW.png
_ThomasRachel.png
A_Gloeckner.png
_123AfG_FffNRW.png
AAAAAAAAAAAAAaD.png
AfG_FffNRW.png
b.png

Diese Listung verstehe ich nicht.

Ziel ist folgende grundsätzliche Anordnung

1.) Sonderzeichen wie _
2.) Zahlen 0-9
3.) Buchstaben aAbBcC... oder AaBbCc...



MONI
 
Zuletzt bearbeitet:
PS: Wie ich gerade gesehen habe, sortiert auch scandir per Default. Nur mit der zweiten Option 2 hast Du genau die Konstante SCANDIR_SORT_NONE erwischt, die das Sortieren ausschaltet.
 
Aber bei scandir und glob werden kleine und GROSSE Buchstaben nicht gemischt. Genau das aber soll der Fall sein. Deshalb ja diese Priorität:


1.) Sonderzeichen wie _
2.) Zahlen 0-9
3.) Buchstaben aAbBcC... oder AaBbCc...


Beispiel:

___d
_q
1tr
9_uw
A
a
B
b
X
x

Die geht auch:

1.) Zahlen 0-9
2.) Buchstaben aAbBcC... oder AaBbCc...
3.) Sonderzeichen wie _

1tr
9_uw
A
a
B
b
X
x
_q
___d


MONI
 
Dann gibt es noch die Möglichkeit, dass Array nach dem Einlesen mit glob selber mit einer Callback-Funktion zu sortieren und vor dem Vergleich alles in Kleinbuchstaben umzuwandeln.
 

Neue Beiträge

Zurück