Anzahl der Dateien in einem Ordner ermitteln
Sonntag, 22. April 2007 | Autor: Pr0g
Diese Funktion ermittelt die Anzahl der Dateien in einem angegebenen Ordner. Optional kann die Zählung auf eine oder mehrere (durch Komma getrennte) Dateiendungen eingeschränkt werden.
Konnte der angegebenen Ordner nicht geöffnet werden, wird der Wert false zurückgegeben welcher zur Fehlerbehandlung genutzt werden kann. Eine typensichere Abfrage per === muss gemacht werden, damit die mögliche Anzahl von 0 Dateien nicht als Wert false erkannt wird.
<?php
//
// Anzahl der Dateien in einem Ordner ermitteln
//
function CountFilesInDir($dir = '', $ext = '') {
// Wurde kein Slash angegeben, dann nachtragen
if (empty($dir)) {
$dir .= './';
} elseif ($dir[strlen($dir) - 1] != '/') {
$dir .= '/';
}
// Dateierweiterungen in ein Array packen
$ext = explode(',', $ext);
// Ordner öffnen
if ($dh = opendir($dir)) {
// Alle Dateien durchlaufen
$count = 0;
while (($file = readdir($dh)) !== false) {
// Prüfen ob es sich um eine Datei handelt und die Endung passt
if (is_file($dir . $file) && (in_array(substr(strrchr($file, '.'), 1), $ext) || empty($ext[0]))) {
$count++;
}
}
// Ordner schließen
closedir($dh);
// Dateianzahl zurückgeben
return $count;
} else {
return false;
}
}
//
// Beispielaufruf 1: Selber Ordner wie die PHP Datei, alle Dateiendungen
//
$file_count = CountFilesInDir();
echo ($file_count === false? 'Fehler beim Öffnen des Ordners!' : 'Der Ordner enthält ' . $file_count . ' Datei' . ($file_count <> 1 ? 'en' : '') . '!');
//
// Beispielaufruf 2: Selber Ordner wie die PHP Datei, eine Endung erlauben
//
$file_count = CountFilesInDir('', 'php');
echo ($file_count === false? 'Fehler beim Öffnen des Ordners!' : 'Der Ordner enthält ' . $file_count . ' Datei' . ($file_count <> 1 ? 'en' : '') . '!');
//
// Beispielaufruf 3: Anderer Ordner wie die PHP Datei, mehrere Endungen erlauben
//
$file_count = CountFilesInDir('test/unterordner', 'php,css,txt');
echo ($file_count === false? 'Fehler beim Öffnen des Ordners!' : 'Der Ordner enthält ' . $file_count . ' Datei' . ($file_count <> 1 ? 'en' : '') . '!');
?>



