Stefan: verzeichnis rekursiv auslesen?

Beitrag lesen

hi, folgendes problem:

ich habe zwei funktionen geschrieben, die eine erstellt mir eine übersichtsdatei aus den inhalten vorhandener dateien in einem verzeichnis und die andere funktion löscht diese dateien.
hierzu habe ich 2 fragen/probleme:

1. das löschen der dateien funktioniert rekursiv aber das erstellen nciht, wie kann ich die dateien rekursiv, also ohne angabe eine bestimmten ordners anlegen, bzw. diese beiden funktionen verbinden?

2. die index-dateien die erstellt werden beinhalten den inhalt aller vorhandenen dateien, so das sie teilw. sehr lang werden. wie kann ich diese auf mehrerer dateien aufteilen?

ich hoffe das war einigermaßen verständlich und mir kann jemand helfen.

hier mein code, wie ich ihn bisher habe:

-------------------
<?php

function make_index($Dir){

$INDEXdata  = implode(' ', file("index_template.tpl"));

$d = dir("./tmp/".$Dir);
  $INDEXCONTENT = array();
  while (false !== ($entry = $d->read())) {
    if($entry != "." && $entry != ".." && strstr($entry,".htm") == false ){
    $lines = file ("./tmp/".$Dir."/".$entry);
    foreach ($lines as $line_num => $line) {
      $INDEXCONTENT[] = "$line";
    }

}
  }

$INDEXfp  = fopen("tmp/".$Dir."/index.htm", "w+");
  $INDEXCONTENT  = implode("\n",$INDEXCONTENT);
  $INDEXdata  = str_replace("<#INDEXCONTENT>","$INDEXCONTENT",$INDEXdata);
  $INDEXdata  = str_replace("<#DIR>","$Dir",$INDEXdata);
  $INDEXdata  = str_replace("<#CATEGORY>","$CATEGORY",$INDEXdata);

echo "<code><b>Indexseite wird erstellt:</b></code><br />\n";
  echo "<code><a href="tmp/".$Dir."/index.htm" target="_blank">".$Dir."/index.htm</a></code><br>\n";

fwrite($INDEXfp, "$INDEXdata");
  fclose($INDEXfp);
    unset($INDEXCONTENT);
  $d->close();
}

function rec_rmdir ($path) {
    if (!is_dir ($path)) {
        return -1;
    }
    $dir = @opendir ($path);

if (!$dir) {
        return -2;
    }

while ($entry = @readdir($dir)) {
        if ($entry == '.' || $entry == '..') continue;
        if (is_dir ($path.'/'.$entry)) {
            $res = rec_rmdir ($path.'/'.$entry);
            if ($res == -1) {
                @closedir ($dir);
                return -2;
            } else if ($res == -2) {
                @closedir ($dir);
                return -2;
            } else if ($res == -3) {
                @closedir ($dir);
                return -3;
            } else if ($res != 0) {
                @closedir ($dir);
                return -2;
            }
        } else if (is_file ($path.'/'.$entry) || is_link ($path.'/'.$entry)) {
              echo "<code><b>".$path."/".$entry." wird gelöscht:</b><br />size: ".filesize($path.'/'.$entry)." <span style="color:#FF0000">DELETED</span></code><br />";
              if (strstr($path.'/'.$entry,".htm") == false) {
                $res = @unlink ($path.'/'.$entry);
              } else {
                $res = true;
              }
              // Fehler?
              if (!$res) {
                  @closedir ($dir);
                  return -2;
              }
          } else {
              @closedir ($dir);
              return -3;
        }
    }

@closedir ($dir);
    return 0;
}

make_index("test");

rec_rmdir("./tmp");

?>
-------------------