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>