Ordner "speziell" auslesen

oldputz1990

Erfahrenes Mitglied
Hallo!

Ich habe folgendes Script, dass mir ein Zufallsbild aus allen Unterordnern ausgibt:

PHP:
   <?php
function getFiles($dir) 
{
    static $files;
    
    $allowed_file_extensions = array();
    $allowed_file_extensions[] = 'gif';
    $allowed_file_extensions[] = 'bmp';
    $allowed_file_extensions[] = 'jpg';
    $allowed_file_extensions[] = 'jpeg';
    $allowed_file_extensions[] = 'png';
    
    
    $len = strlen($dir);
    if($dir{$len-1} == '/')
        $dir = substr($dir, 0, $len-1);
    
    if(!is_dir($dir))
        return false;
        
    $open = @opendir($dir);
    
    if(!$open) 
        return false;
    
    while($file = readdir($open)) {        
        if($file == "." || $file == "..")    
            continue;
        
        if(is_dir($dir.'/'.$file)) {
            getFiles($dir.'/'.$file);
        }    
            
        $e = explode('.', $file);
        $ext = $e[ count($e)-1 ];
        
        if( is_file($dir.'/'.$file) && in_array($ext, $allowed_file_extensions) ) {
            $files[] = $dir.'/'.$file;
        }
    }
    
    return $files;
}


$files = getFiles('./gallery');
$rand = mt_rand(0, count($files)-1);

echo '<img src="'. $files[ $rand ] .'" />';
?>

Hat bisher immer super funktioniert!

Nun stehe ich vor dem Problem, dass ich nur die kleinen Bilder als Zufallsbild verwenden möchte.

So ist die Ordnerstruktur aufgebaut:
Code:
.
/gallery

./gallery/1
./gallery/1/big
./gallery/1/medium
./gallery/1/small

.gallery/2
./gallery/2/big
./gallery/2/medium
./gallery/2/small

Ich möchte aber nur die Bilder auslesen, die sich in dem "small" Ordner befinden.

Hat jemand eine Idee, wie ich das am besten realisieren kann?

Danke!
 
Innerhalb der while-Schleife ist eine Rekursion, welche die Ordner durchläuft. Die Prüfung per if, ob es ein Ordner ist, springt gerade zu ins Auge. Das Erweiterst du einfach um $file != 'big' oder ungleich 'small'.

Du siehst sehr simpel.
 
Hallo!

Danke für deine Antwort.

Ich muss zugeben, dass ich nicht dieses Script geschriben habe.

Was ist eine Rekursive, und wo muss ich die IF Abfrage einbauen?

Danke!
 
Zurück