PHP 4.3

10.4 Auslesen von einfachen Daten

Jede Lese- oder Schreibaktion in einer Datei erfolgt mittels eines internen Zeigers, den Sie mit dem Textcursor in Word vergleichen können. Er ist gewissermaßen das erweiterte Auge von PHP innerhalb einer Datei, indem er die Datei Zeichen für Zeichen ausliest oder beschreibt.

Ohne weitere Maßnahmen steht der Zeiger nach dem Öffnen am Anfang ("r", "r+", "w", "w+") bzw. am Ende ("a", "a+") der Datei. Wenn Sie bestimmte Teile des Inhalts einer Datei lesen, schreiben oder verändern möchten, müssen Sie dem Zeiger sagen, wo er die entsprechenden Informationen finden kann bzw. ändern soll. Mehr dazu im nächsten Abschnitt.

Zum Auslesen von Daten stellt PHP je nach Verwendungszweck verschiedene Funktionen zur Verfügung. Alle diese Funktionen setzen den internen Zeiger so, dass er hinter den jeweils gelesenen Informationen steht - beim nächsten Aufruf lesen Sie also (wenn vorhanden) die nachfolgenden Informationen.

fgets(Dateizeiger, Länge)

Auslesen einer Text-Zeile. Liest bis zum Ende einer Zeile oder bis zur Anzahl der Länge - 1. Der Zeiger springt danach zum ersten Zeichen der nächsten Zeile, sofern diese folgt.

fgetc(Dateizeiger)

Auslesen eines einzelnen Zeichens aus einer Datei im Textformat. Der Zeiger wandert ein Zeichen weiter.

fgetcsv(Dateizeiger, Länge)

Auslesen einer Text-Zeile in kommaseparierter (siehe unten) Formatierung. Die ausgelesenen Daten werden dabei als eindimensionales Array zurückgegeben.

fread(Dateizeiger, Länge)

Auslesen von Binärdaten in der angegebenen Länge oder bis zum Ende der Datei.

Um eine Datei zeilenweise auszulesen, bietet sich die Nutzung einer while-Schleife an, die in jedem Durchlauf mittels der Funktion feof() prüft, ob der Zeiger am Ende der Datei angekommen ist. Dafür gibt feof() den booleschen Wert true oder false zurück.

Mit der Funktion fgets() wird eine Zeile der Datei ausgelesen.

Dabei gibt es drei Faktoren, die das Ende des gelesenen Bereichs bestimmen:

  1. Der von Ihnen angegebene Parameter Länge
  2. Das Ende der Zeile (Zeilenumbruch)
  3. Das Ende der Datei

Im folgenden Beispiel geben wir die Länge mit 4096 Zeichen an. Das ist in den meisten Fällen mehr als ausreichend, weil man versucht, Zeilen so zu schreiben, dass sie vollständig auf dem Bildschirm abbildbar, also selten länger als 200 Zeichen sind. Die Abbruchbedingung der Schleife liefert die Funktion feof(). Das Ausrufezeichen ("!") bedeutet ja soviel wie "nicht", sodass sich die Schleife wie folgt lesen würde:

"Solange die Funktion feof() nicht true, also das Ende der Datei meldet, weise der Variable $zeile den Wert zu, den fgets() aus der Datei mit dem Dateizeiger $fp zurückliefert und gib den Wert der Variablen aus."

fgets() liefert mit der Zeile auch immer den abschließenden Zeilenvorschub mit (wenn einer gelesen wurde). Da das häufig stört, setzen wir im Skript noch eine weitere neue Funktion ein: chop(). Sie ist ein Synonym für rtrim() und entfernt überflüssige Leerzeichen, Tabulatoren und Zeilenvorschübe am Ende einer ausgelesenen Zeile. Außerdem schließen wir die Ausgabe in eine if-Anweisung ein, die verhindert, dass leere Zeilen angezeigt werden.

Im Skript sieht das wie folgt aus:

Zeilen auslesen
<?php
       
  $fp  = @ fopen("test.txt", "r");
        
  while (!  feof( $fp )) {
   $zeile  = fgets( $fp , 4096);
   $zeile  = chop( $zeile );
   if ( $zeile  != "") {
   echo  $zeile  . "<br>";
   }
  }

  fclose( $fp );

?>

Wir greifen an dieser Stelle der Erläuterung der Funktion fclose() ein wenig vor. Sie dient dem Schließen von Dateien.

Kommentare (0)

Ihr Kommentar

Name