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:

Sempervivum

Erfahrenes Mitglied
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.
 

rernanded

Erfahrenes Mitglied
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
 

Sempervivum

Erfahrenes Mitglied
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.