Felix Riesterer: NUR Unterverzeichnisse eines Ordners auflisten, keine Dateien

Beitrag lesen

Liebe Energie,

ich habe mir einmal das hier gebastelt. Möge es jemanden von Nutzen sein:

<?php  
  
/* Funktion zum Auslesen eines Verzeichnisses  
*  
* (array) verzeichnis_auslesen( (string) $pfad [,(string) $welche[, (boolean) $rekursiv]] )  
* $pfad = Verzeichnispfad relativ zum aufrufenden Script  
* $welche = Verzeichnisse und/oder Dateien? ('alle', 'verzeichnisse', 'dateien')  
* $rekursiv = Unterverzeichnisse mit auflisten? ( true, false)  
*  
*/  
  
   function verzeichnis_auslesen($pfad, $welche = 'alle', $rekursiv = true)  
      {  
      $pfad = preg_replace('~(.*)/$~', '\\1', $pfad); // letzten Slash aus dem String entfernen  
      $liste = array();  
      $lesezugriff = opendir($pfad);  
      while($ein_eintrag = readdir($lesezugriff))  
         {  
         switch($welche)  
               {  
               case 'dateien':  
                  if (is_file("$pfad/$ein_eintrag"))  
                     $liste[] = $rekursiv ? "$pfad/$ein_eintrag" : $ein_eintrag;  
               break;  
  
               case 'verzeichnisse':  
                  if (is_dir("$pfad/$ein_eintrag") && !preg_match('~^\.\.?$~', $ein_eintrag))  
                     $liste[] = $rekursiv ? "$pfad/$ein_eintrag" : $ein_eintrag;  
               break;  
  
               default:  
                  if (!preg_match('~^\.\.?$~', $ein_eintrag))  
                  $liste[] = $rekursiv ? "$pfad/$ein_eintrag" : $ein_eintrag;  
               }  
         // Unterverzeichnisse?  
         if(!preg_match('~^\.\.?$~', $ein_eintrag) && is_dir("$pfad/$ein_eintrag") && $rekursiv)  
            {  
            $liste2 = verzeichnis_auslesen("$pfad/$ein_eintrag", $welche, $rekursiv);  
            foreach($liste2 as $ein_eintrag2) $liste[] = $ein_eintrag2;  
            }  
         }  
      closedir($lesezugriff);  
      sort($liste);  
      return $liste;  
      }  
  
$pfad = isset($_GET['pfad']) ? $_GET['pfad'] : '.';  
if ($pfad == '') $pfad = '.';  
$welche = isset($_GET['welche']) ? $_GET['welche'] : 'alle';  
$rekursiv = isset($_GET['rekursiv']);  
  
?>  
<html>  
    <head>  
        <title>Verzeichnis auslesen</title>  
    </head>  
    <body>  
        <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="get">  
        <p>Pfad: <input name="pfad" type="text" /> |  
        <select name="welche">  
            <option value="">anzuzeigen</option>  
            <option value="alle">alles</option>  
            <option value="verzeichnis">nur Verzeichnisse</option>  
            <option value="dateien">nur Dateien</option>  
        </select> | rekursiv <input name="rekursiv" type="checkbox" /> <input type="submit" name="button" value="anzeigen" /></p>  
        </form>  
<?php  
  
$verzeichnis = isset($_GET['pfad']) ? verzeichnis_auslesen($pfad, $welche, $rekursiv) : false;  
  
if ($verzeichnis)  
   {  
   echo "<pre>Verzeichnis-Listing:\n";  
   print_r($verzeichnis);  
   echo "</pre>\n";  
   }  
?>  
    </body>  
</html>

Liebe Grüße aus Ellwangen,

Felix Riesterer.