PHP: Dateien und Ordner auflisten

23 Oktober 2009 in Code Snippets, PHP Kommentieren »

Diese Funktion liest die Namen aller Dateien und Ordner in einem Verzeichnis ein und gibt diese in einem Array zurück, welches danach etwa mit einer Schleife aufgelistet werden kann.

Die Dateien können zusätzlich auf bestimmte Typen beschränkt und die Auflistung von Ordner deaktiviert werden.

<?php

// Dateien und Ordner aus einem Verzeichnis ermitteln
function list_dir($path$extensions ''$list_folder false) {
  
// Prüfen ob das Verzeichnis existiert
  
if (!file_exists($path)) {
    return array();
  }

  
// Liste erlaubter Erweiterungen erstellen
  
if (!empty($extensions)) {
    
$extensions explode(','$extensions);
  }

  
// Pfad um Backslash am Schluss ergänzen
  
$path rtrim($path'/') . '/';

  
// Ordner öffnen und alle Einträge durchlaufen
  
$dh opendir($path);
  
$list = array();
  while (
$file readdir($dh)) {
    
$is_dir is_dir($path $file);
    
// Ordner überspringen, falls nicht erwünscht
    
if ((!$list_folder && $is_dir) ||
        
// Sprungmarken überspringen
        
($file == '.' || $file == '..') ||
        
// Unerwünschte Dateitypen überspringen
        
($extensions && !$is_dir &&
         !
in_array(strtolower(substr(strrchr($file'.'), 1)), $extensions))) {
      continue;
    }

    
// Datei zur Liste hinzufügen
    
$list[] = $file;
  }

  
// Ordner schließen und Liste zurückgeben
  
closedir($dh);
  return 
$list;
}

?>

Als Parameter erwartet die Funktion den Pfad des auszulesenden Verzeichnisses, relativ zum Script. Optional kann als zweiter Parameter eine Liste zugelassener Dateierweiterungen angegeben werden (einzelne Erweiterungen durch ein Komma trennen). Der dritte Parameter ist ebenfalls optional und aktiviert die Auflistung von Ordnern.

Nachfolgend noch ein paar Beispielaufrufe mit verschiedenen Optionen:

<?php

// Beispielaufruf 1: Alle Dateien
$path 'uploads';
$files list_dir($path);
echo 
'<ul>';
foreach (
$files as $file) {
  echo 
'<li>' $file '</li>';
}
echo 
'</ul>';

// Beispielaufruf 2: Alle Dateien und Ordner
$files list_dir($path''true);

// Beispielaufruf 3: Nur HTML und PHP Dateien
$files list_dir($path'html,php');

// Beispielaufruf 4: Nur HTML und PHP Dateien, sowie Ordner
$files list_dir($path'html,php'true);

?>

Einen Kommentar hinterlassen