Ordner auslesen und Datein sortieren mit verschiedenen Datei-Endungen

concept

Grünschnabel
Hallo Zusammen!

Als erstes möchte ich zu diesem tollen Forum gratulieren. Es hat mir schon etliche Male geholfen!

Zu meinem Problem, welches ich seit einer Woche einfach nicht hinkriege. Ich habe ein Script gebaut, welches diverse Dateien (jpg, png, mp4) aus einem Ordner ausliest. Das klappt wunderbar. Dabei werden die Dateien für für Flash aubereitet (XML). Leider bekomme ich es nicht hin, dass die Dateien richtig sortiert nach alphabet (gross klein Schreibung sollte sollte ignoriert sein) werden.

Folgendes wird ausgegeben:

'<video source="/home/3_clubhouse.mp4" />' +
'<video source="/home/1_royal.mp4" />' +
'<image source="/home/test.jpg" />' +
'<video source="/home/4_remady.mp4" />'
usw

Hier mein Script:

PHP:
<?php
$handle=opendir($folder); 
while ($file = readdir ($handle)) { 
  if ($file != "." && $file != "..") {    
    $extension = substr(strrchr($file,"."),1);
    $extension = strtolower($extension);
    if($extension=="jpg"){
      echo "'<image source=".'"'."$channel/$file".'" />'."' +";
    }
	if($extension=="mp4"){
      echo "'<video source=".'"'."$channel/$file".'" />'."' +";
    }
if($extension=="png"){
      echo "'<image source=".'"'."$channel/$file".'" />'."' +";
  }	
 } 
}
closedir($handle);
?>

Ich hoffe jemand kann mir da unter die Arme greifen.

Vielen Dank im voraus!

Liebe Grüsse
Maurizio
 
Du musst die dateien erst in ein arrray (zB) einlesen und dann sortieren ;) Allerdings sind die nicht automatisch alphabetisch sortiert?
 
Sie sind eben nicht automatisch sortiert. Manchmal wenn ich die Dateien neu hochlade stimmts, aber es scheint zufall zu sein. Wenn ich die Dateien in ein array einlese und sortiere stimmts natürlich, jedoch weiss ich nicht wie ich danach bei der Ausgabe zwischen image und video unterscheiden kann:

'<video source="/home/3_clubhouse.mp4" />' +
'<video source="/home/1_royal.mp4" />' +
'<image source="/home/test.jpg" />' +
'<video source="/home/4_remady.mp4" />'

Bei jpg und png sollte immer "image" stehen und bei mp4 "video".

Bin echt am verzweifeln!
 
Dumme Frage, aber wenn ich 2 Arrays mache, werden die danach zu einander auch sortiert?

Array image:
1.jpg
3.jpg
5.jpg

Array video:
2.mp4
4.mp4
6.mp4

Danach:
1.jpg
2.mp4
3.jpg
4.mp4
5.jpg
6.mp4

viellecht kannst Du mir etwas scripten?
 
Naja, anstatt 2 arrays machste dann doch nur eins und übergibts die extension als wert mit

array
$file['name']['extension']

und sortierst nach name
 
Meine Güte:

Du machst ingesamt 3 Arrays, für jeden Filetyp eins.
Dann werden erstmal alle Dateien in diese Arrays eingeordnet, zB mit einer switch($file['name']['extension'])-Abfrage.
Dann wird jedes Array sortiert und ausgegeben - feddich.
 
Warum denn so kompliziert? Sortier doch erst und weise dann die Aktion zu. Also erst das Verzeichnis in ein Array einlesen. Das sortierst du dann und weist anschließend über die Routine, die du jetzt ja schon hast, die Aktion zu. Ist doch egal, ob du vorher oder hinterher die Dateierweiterung nutzt.
 
Zurück