Tom: Datei lesen und schreiben, mit Erklärungen

Beitrag lesen

Hello,

kleine Erläuterung und Fehlerkorrektur. length() gibt es nicht in PHP...

also besser so:

define('CRLF', "\n");       ## Zeilenende-Zeichen muss zum System passen
  define('FELDTRENNER','|');  ## Trennzeichen zwischen den Datenfeldern

## darf in den Daten nicht vorkommen!

$datei_name   = "Datei";
  $datei_handle = fopen("$datei_name", 'rw');          ## Datei öffnen
  $datei_lock   = flock($dateihandle, LOCK_EX);        ## Dateisperre beantragen und solange

## warten bis es klappt

$datei_laenge = filesize($datei_name);               ## Dateigröße ermitteln
  $datei_inhalt = fread($datei_handle, $datei_laenge); ## Datei komplett auslesen
  $datei_array  = explode(CRLF, $datei_inhalt);        ## ausgelesene Datei in Array umwandeln
                                                       ## ein Element pro Datensatz
  foreach($datei_array as $satznummer => $datensatz)   ## alle Elemente des Arrays
  {
    $datei_array[$satznummer] = explode(FELDTRENNER,$datensatz);  ## in Felder aufteilen

if($datei_array[$satznummer][0] == '2' and         ## gleichzeitig nach gewünschtem
       $datei_array[$satznummer][1] == 'Tina' and      ## Inhalt fahnden
       $datei_array[$satznummer][2] == 'Hannover')
    {
      $datei_array[$satznummer][2] = 'München';        ## Bei Treffer ersetzen
    }
  }

foreach($datei_array as $satznummer => $datensatz)   ## Felder wieder zu Zeilen verpacken
  {
    $datei_array[$satznummer] = implode(FELDTRENNER,$datensatz);
  }

$datei_inhalt = implode(CRLF, $datei_array);         ## Zeilen wieder zu String verpacken

fseek($datei_handle, 0, SEEK_SET);                   ## Satzzeiger an den Dateianfang

## zurückstellen

fwrite($datei_handle, $datei_inhalt);                ## Dateiinhalt wegschreiben

ftruncate($datei_handle, $strlen($datei_inhalt);     ## evtl. überstehenden Rest der alten
                                                         ## Datei abschneiden

fclose($datei_handle);                               ## Datei schließen und Lock freigeben

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

Tom

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