Rekursives auslesen eines Ordners

Borsty

Mitglied
Hey Leute, ich habe mir ein Script geschrieben, welches aus einem Order mir alle Bilder in ein Array schreibt, leieder funktioniert das nur für das Verzeichniss in dem auch das Script liegt also ".". Die Lösung heißt wohl rekursive Schleife, richtig? Habe jetzt schon soo viel probiert aber komm einfach nicht zu einer Lösung. Könnt ihr mir helfen?

Auszug aus dem Code:
Code:
$fh = opendir('.'); //Verzeichnis
$verzeichnisinhalt = array();
	while (true == ($file = readdir($fh))) 
	{
    	
    	if (is_file($file))
    	{
    	if ((substr(strtolower($file), -3)=="jpg") or (substr(strtolower($file), -3)=="gif")) //Abfrage nach gueltigen Datenformat
        	{
        	$verzeichnisinhalt[] = $file;
        	}
    	}
	}
So das t soweit, aber ändere ich die Zeile
Code:
$fh = opendir('.'); //Verzeichnis
in
Code:
$fh = opendir('/test'); //Verzeichnis
gibt er immer nur das erste Bild im Ordner test aus!
 
Bin in der Schule muss mich also kurz halten:

Mach eine Funktion die ein Array von einem Ordner wiedergibt.

Innerhalb der Funktion wird geprüft ob es noch ein Unterordner gibt und für diesen unterordner wird die selbe Funktion wieder aufgerufen. So ruft sich die Funktion selbst auf solange nicht die tiefsten Tiefen vom Verzeichnis erreicht werden.

Ganz grob:

Function DieFunktion($Verzeichnis as string) as array
$a ist dein Array
schleifen anfang von 0 bis anzahl der dateien {
$a[Zähler] = Dateiname/Verweis
Wenn $a[Zähler] ein verzeichnis dann $a[Zähler] = DieFunktion(DasAktuelleVerzeichnis)
}
return $a
end function

So grob kann es ablaufen. Für Details wie gesagt keine Zeit. Nichmal für gescheites PHP wie du siehst ;) aber für dich bestimmt verständlich.
 
Ja das ist schonmal sehr sehr gut, habe mir das jetzt soweit umgeschrieben, dass er jetzt den Ordner "1" ausließt, gibt nur noch das kleine Problem das er mir die FILES nicht in mein Array Verzeichnisinhalt schreiben will, was mache ich falsch?

Code:
<?php

$verzeichnisinhalt = array();
function get_dir($par_dir, $ebene){ 
    if ($handle = opendir($par_dir)){ 
		
        while (false != ($file = readdir($handle))) { 
            
			if ((substr(strtolower($file), -3)=="jpg") or (substr(strtolower($file), -3)=="gif") or (substr(strtolower($file), -3)=="png"))
				{
             					         
                  echo $file."</a><br>\n"; 
					$verzeichnisinhalt[] = $file;

            } 
        } 
        closedir($handle); 
    }  
} 

get_dir("./1", "")  ;
var_dump($verzeichnisinhalt);

?>
 
Zurück