Go to English page

ViaThinkSoft CodeLib

Dieser Artikel befindet sich in der Kategorie:
CodeLibProgrammierhilfenPHP

Direkte Ausgabe:

function dir_rekursiv($verzeichnis) {
        $verzeichnis .= (substr($verzeichnis, -1) == '/' ? '' : '/');
        $handle =  opendir($verzeichnis);
        while ($datei = readdir($handle)) 
        {
                if (($datei != '.') && ($datei != '..')) 
                {
                        $file = $verzeichnis.$datei;
                        if (is_dir($file)) // Wenn Verzeichniseintrag ein Verzeichnis ist
                        {
                                // Erneuter Funktionsaufruf, um das aktuelle Verzeichnis auszulesen
                                dir_rekursiv($file.'/'); 
                        } else {
                                // Wenn Verzeichnis-Eintrag eine Datei ist, diese ausgeben
                                // TODO: Hier etwas mit der Datei tun
                                echo $file.'<br />';
                        } 
                }
        }
        closedir($handle); 
}

Ausgabe in ein Array:

function getAllFiles($directory, $recursive = true) {
        $result = array();
        $handle = opendir($directory);
        while ($datei = readdir($handle)) 
        {
                if (($datei != '.') && ($datei != '..')) 
                {
                        $file = $directory.$datei;
                        if (is_dir($file)) {
                                if ($recursive) {
                                        $result = array_merge($result, getAllFiles($file.'/', $recursive));
                                }
                        } else {
                                $result[] = $file;
                        } 
                }
        }
        closedir($handle);
        return $result;
}

Verwendungsbeispiel: Zeitstempel der neuesten Datei ermitteln

function getHighestFileTimestamp($directory, $recursive = true) {
        $allFiles = getAllFiles($directory, $recursive);
        $highestKnown = 0;
        foreach ($allFiles as $val) {
                $currentValue = filemtime($val);
                if ($currentValue > $highestKnown) $highestKnown = $currentValue;
        }
        return $highestKnown;
}

echo 'Das Datum der neuesten Datei ist:<br>';
echo date('Y-m-d H:i:s', getHighestFileTimestamp('../'));

Veröffentlichung: http://de.php.net/manual/de/function.filemtime.php#91665
Daniel Marschall
ViaThinkSoft Mitbegründer