Hello,
Nur noch eine kleine Hilfestellung. Ich hatte mir mal eine Funktion gemacht um text in einer Datei zu ersetzen. Vielleicht hilft dir das ja weiter.
Diese Funktion ist nicht ok.
function replace_all($string1, $string2, $filename)
{
$fp = fopen( $filename, 'r'); ## hier öffnest Du eine Datei,
## um sie zu lesen
#> $contents = fread($fp, filesize($filename)); ## Hier lässt Du die Datei zum zweiten
## Mal öffen und einlesen
if (!fp) return false; ## Konnte die Datei geöffent werden?
if (!flock($fp,LOCK_EX)) return false; ## Konnte die Datei gesperrt werden?
$fsize = filesize($fp); ## Größe der Datei bestimmen une merken
if ($fsize == 0) ## Datei lesen würde bei PHP einen
{ ## einen fehler verursachen, wenn sie
fclose($fp); ## leer ist. PHP.Entwickler haben eine
return true; ## merkwürdige Auffassung von Fehler-
} ## behandlung
$content = fread($fp,$fsize); ## Datei vollständig auslesen
## bei http:// als Schleife ausführen!
#> fclose($fp); ## das darfst Du jetzt noch nicht machen!
$massreplace = preg_replace("#$string1#i", $string2, $content);
#> $fp = fopen($filename, 'w'); ## das ist überflüssig, weil die Datei
## jetzt noch offen ist
#> fputs($fp, $massreplace); ## Das würde die Datei zum zweiten Mal
## zum Schreiben öffen und ist damit
## unsinnig
fseek($fp,0,SEEK_SET); ## Dateizeiger auf den Anfang zurückstellen
fwrite($fp, $content); ## neuen Content zurückschreiben
ftruncate($fp,strlen($content)); ## Dateilänge auf die _Bytelänge_ des
## Content anpassen, also _nicht_
## mb_strlen() verwenden, auch wenn der Inhalt
## UTF-8-codiert ist!
fclose($fp); ## Datei schlißen und dadurch automatisch
## entsperren.
return true;
}
wenn man die Länge der Datei in der Funktion ein zweites Mal abfragen wollte, müsste man vorher
http://www.php.net/manual/en/function.clearstatcache.php aufrufen.
http://www.php.net/manual/en/function.ftruncate.php
Die Fehlerbehandlung ist hier auch noch nicht vollständig, denn theoretisch kann während jedes Lese- und Schreibvorganges das Handle ungültig werden oder sonstige Dinge geschehen, die das Lesen oder Schreiben der Datei unmöglich machen. Das hängt u.a. vom OS ab, auf dem das FS läuft.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
