Verzeichnis Einlesen: GetAllFiles()


<html><head><title>Anzeige</title></head> <body bgcolor="#eeeeee"><pre> <h2>Verzeichnis Einlesen: GetAllFiles()</h2><hr noshade size="1"> <? // ====================== HilfsFunktionen ================= // // Rekursives Einlesen von Verzeichnissen // Input : Array mit Basis-Directories ($rootPath) // Return: Array mit allen File/Dir in Unterverzeichnissen function GetAllFiles($arrDir) { $arrRet_F = array(); //foreach($arrDir as $arr) { for($i=0; $i < count($arrDir); $i++ ) { $arr = $arrDir[$i]; $arrTmp_F = GetDirFiles($arr["Verz"].$arr["Name"]."/","File"); $arrRet_F = php3_array_merge($arrRet_F,$arrTmp_F); $arrTmp_D = GetDirFiles($arr["Verz"].$arr["Name"]."/","Dir"); $arrRet_F = php3_array_merge($arrRet_F, GetAllFiles($arrTmp_D) ); } return $arrRet_F; } // Verzeichnis auf Files o. Dirs einlesen; // Return: Array; $mode = {"Dir","File"} function GetDirFiles($strPath,$mode) { $objDir = opendir($strPath); // Verzeichnis Oeffnen $arrDir = array(); while ($strFile = readdir($objDir)) { // Verzeichnis Einlesen if ( ((! strcmp($mode,"Dir") ) && is_dir($strPath.$strFile) ) || ((! strcmp($mode,"File")) && (! is_dir($strPath.$strFile) ) ) ) if ( IsSelectedFile($strFile,$mode) ) { $arrDir [] = array("Typ" => is_dir($strPath.$strFile) ? "Dir" : "File", "Verz" => $strPath, "Name" => $strFile, "Size" => filesize($strPath.$strFile), "Datum" => date("d.m.Y",filemtime($strPath.$strFile)), "Zeit" => date("H:i",filemtime($strPath.$strFile))); } } closedir($objDir); // Verzeichnis Schließen return $arrDir; } // UP von GetDirFiles(): "File/Dir aufnehmen o. ausselektieren ?" function IsSelectedFile($strFile,$mode) { if ( ! strcmp($mode,"Dir") ) { // a. Directory if ( ereg("^\.",$strFile) ) // nicht: "." ".." return false; } else { // b. Filter WEG-Mit wenn: if ( ! ereg("\.php3",$strFile) ) return false; // nicht ".php3" if ( ereg("\.inc" ,$strFile) ) return false; // wenn: ".inc" } return true; // OK: selektiert } // Ausgabe eines 2-dim-Assoz-Arrays als HTML-Tabelle function ShowArrayTable($arr) { $showheader = true; // Merker: Header schon ausgegeben ? $arr = php3_array_multisort($arr); // Sortierung echo "<TABLE cellpadding=\"3\" BORDER=1>"; for($i=0; $i < count($arr); $i++) { // alle Dateien/Verzeichnisse $arrDatei = $arr[$i]; if ( $showheader ) { // Table-Header (beim 1. Mal) $showheader = false; // dann verriegeln echo "<TR bgcolor=\"#cccccc\"><TH align=\"left\">"; echo implode("</TH><TH align=\"left\">\n",php3_array_keys($arrDatei)); echo "</TH></TR>"; } // Table-Data echo "<TR><TD>".implode("</TD><TD>\n",$arrDatei)."</TD></TR>"; } echo "</TABLE>"; } // ====================== ProgrammAblauf ================== // $rootPath = "../"; // BasisPfad // a. Dateien u. Verzeichnisse Lesen $arrDir_D = GetDirFiles ($rootPath,"Dir"); // Dir $arrDir_F1 = GetDirFiles ($rootPath,"File"); // Files; root $arrDir_F2 = GetAllFiles ($arrDir_D); // Files: andere rekursiv $arrDir_T = php3_array_merge($arrDir_F1,$arrDir_F2); // b. Ausgabe als HTML-Tabellen echo "<br><u><b>Alle PHP3-Files</b></u><br>\n"; ShowArrayTable($arrDir_T) ; // Ergebnis als Tabelle ?> </pre></body></html>