verzeichnis rekursiv auslesen?
Stefan
- php
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");
?>
-------------------
Hallo Stefan,
unter der Voraussetzung, Du gibst die Quelle für dieses Script Preis, habe ich die Lösung für Dich parat, da der identische Code mir heute per E-Mail zugesandt wurde und ich das Script also schon mal ausgemistet habe...
Gruß aus Berlin!
eddi
Hallo eddi/XaraX,
das script hatte ich dir zugemailt, zusammen mit dem csv-file. dachte nicht das du noch antworten würdest deswegen hatte ich es hier noch mal versucht! wäre nett wenn du eine lösung für mich hast...
gruß
Stefan