Also ich hab folgenden Code gefunden und ein wenig umgeschrieben:
Funktioniert so weit auch ganz gut, die markierte Stelle soll halt in jeder Datei ein bestimmtes Wort ersetzen. Da die Funktion auch alle Unterverzeichnisse durchläuft, dachte ich, das auch alle Wörter in den Unterdateien ersetzt werden, werden sie aber nicht.
Heißt alle Dateien im Hauptverzeichnis werden entsprechend bearbeitet, die Unterverzeichnisse werden dann zwar kopiert aber die Dateien darin werden nicht richtig geändert: Das zu ersetzende Wort wird entfernt aber das neue wir nicht eingesetzt. Was ist an dem Code falsch?
PHP:
$num = 0;
if(!is_dir($dstdir)) mkdir($dstdir);
if($curdir = opendir($srcdir)) {
while($file = readdir($curdir)) {
if($file != '.' && $file != '..') {
$srcfile = $srcdir . '/' . $file;
$dstfile = $dstdir . '/' . $file;
if(is_file($srcfile)) {
if(is_file($dstfile)) $ow = filemtime($srcfile) - filemtime($dstfile); else $ow = 1;
if($ow > 0) {
if($verbose) echo "Copying '$srcfile' to '$dstfile'...";
if(copy($srcfile, $dstfile)) {
//-----------------------------------------------------------------
$needle = array("_vorlage");
$replace = "etwas_anderes";
$haystack = file_get_contents("$dstfile");
$text = str_replace($needle, $replace, $haystack);
$fp = fopen("$dstfile","w");
fwrite( $fp, $text);
fclose( $fp );
//-----------------------------------------------------------------
touch($dstfile, filemtime($srcfile)); $num++;
if($verbose) echo "OK\n";
}
else echo "Error: File '$srcfile' could not be copied!\n";
}
}
else if(is_dir($srcfile)) {
$num += dircopy($srcfile, $dstfile, $verbose);
}
}
}
closedir($curdir);
}
Heißt alle Dateien im Hauptverzeichnis werden entsprechend bearbeitet, die Unterverzeichnisse werden dann zwar kopiert aber die Dateien darin werden nicht richtig geändert: Das zu ersetzende Wort wird entfernt aber das neue wir nicht eingesetzt. Was ist an dem Code falsch?