Tom: zeilenweise ersetzen

Beitrag lesen

Hello,

habe jetzt mal von allem etwas und es funtkioniert auch (fast) so wie ich es will.

Glaub ich nicht :-)

habe die txt noch etwas abgeändert

chris|Frankfurt
Tina|Hannover
Stefan|Dresden
_______________

$datei_handle = file(datei.txt);     ## file() liefert kein Handle, sondern
                                       ## den Inhalt der Datei in einem Zeilenarray

$suchen = "Hannover";
$ersetzen = "München";
$user = "Tina";

foreach($datei_handle as $zeile)
{
  $zeile = explode("|", $zeile);
  if($zeile[0] == $user)
  {
  $zeile[1] = str_replace($suchen, $ersetzen, $zeile[1]);

## das funktioniert zwar, ist aber eigentlich nicht genau das, was Du willst
  ## es wird hier das gesuchte Wort ersetzt, nicht aber der komplette Inhalt der Datenzelle
  ## Dass der hier zufällig identisch ist, liegt an der Art Deiner Suche.
  ## Wenn Du mal anders suchst, dann kann sowas in die Hose gehen, wenn Du nicht daran denkst
  ## auch die Ersetzungsfunktion anzupassen.

}
  $zeile = implode("|", $zeile);

$datei = fopen("datei.txt", 'a');

Der Öffnungsmodus 'a' steht für "Anhängen" oder "Append".

Du willst aber sicher die gesamte alte mit der geänderten Datei überschreiben.

Daür müsstest Du den Öffnungsmodus 'w' nehmen.

fwrite($datei, $zeile);
  fclose($datei);
}

Wenn Du nun aber einfach 'a' gegen 'w' ersetzt, dann hättest Du nur noch die letzte Zeile in der Datei stehen.

Du müsstest die Datei zum Schreiben also _vor_ Deiner Schleife öffnen und _hinter_ _dem_ _Ende_ ersxt wieder schließen.

$inhalt = file()
  ...

$handle = fopen(...,'w');

foreach()
  {

...

fwrite($handle,$verpacktezeile)
  }

fclose()

Außerdem hat Deine Methode so eine empfindliche Schwachstelle.
Wenn Du die Datei eingelesen hast, und öffnest sie dann mittels fopen($dateiname,'w'), dann ist die alte Datei weg. Wenn Dein Script nun nicht ordnungsgemäß arbeitet, bleibt sie kaputt oder verschwunden...

Außerdem darf dieses Script nur ein User (ein Prozess) zur gleichen Zeit verwenden.
Wenn Du das nicht sicherstellen kannst, gefährdest Du auch Deine Daten.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau