PHP Tutorials – Dateien auslesen

Das Auslesen einer Datei macht eigentlich nur Sinn, wenn man keine MySQL-Datenbank hat. Es wird aber oft für Logfiles, Templates, Konfigurationsdateien oder ähnliches verwendet. Aus diesem Grund ist es gut zu wissen, wie man mit Dateien arbeiten kann.
Es gibt verschiedene Formen, wie ein Inhalt in einer Textdatei stehen kann. Oft hängt es davon ab, wofür die Daten benötigt werden.
Wenn man z.B. ein Login-Skript erstellen will, ist es sinnvoll, so zu schreiben:

Benutzername|Passwort|Alter|Wohnort

Als Trennzeichen kann jedes Zeichen verwendet werden, es sollte nur nicht in den einzelnen Spalten vorkommen.
Nun kann aber auch einfach ein längerer Text in einer Datei stehen:
Es ist ein schöner Tag, perfektes Wetter, alles was man sich wünscht….
Der Text kann mehrere Zeilen lang sein, daher ist die obige Variante nicht mehr sinnvoll.

Lesen eines langen Textes

Um einen Text aus einer Datei auszulesen, genügt ein kurzes Skript. Wir beginnen mit dem Dateinamen. Diesen speichern wir in einer Variablen:

<?php

$datei = "langertext.txt";

?>

Jetzt wird es etwas schwieriger, denn wir öffnen die Datei, die wir zuvor in der Variablen $datei gespeichert haben. Das machen wir mit fopen:

<?php

$file = fopen($datei,"r");

?>

Das Auslesen erfolgt mit fread, wobei als erster Parameter die Datei und als zweiter Parameter die Größe in Byte angegeben wird, bis zu der die Datei gelesen werden soll. In diesem Beispiel wurde die Funktion filesize verwendet, die die Größe der Datei ermittelt und die Datei bis zum Ende liest:

<?php

echo fread($file,filesize($datei));

?>

Zum Schluss muss die Datei nur noch geschlossen werden, was mit fclose unter Angabe der Datei geschieht:

Hier nocheinmal das komplette Script:

<?php

$datei = "langertext.txt";

$file = fopen($datei,"r");

echo fread($file,filesize($datei));

fclose($file);

?>

Lesen einzelner Einträge

Anfang und Ende bleiben gleich. In der Mitte verwenden wir nun eine while-Schleife, die jede Zeile einzeln liest. Bei einer while-Schleife funktioniert der Teil in den runden Klammern () ähnlich wie bei einer if-Abfrage. Wenn er den Wert true hat, wird die while-Schleife fortgesetzt, wenn er den Wert false hat, wird sie abgebrochen:

<?php

$datei = "user.txt";

$file = fopen($datei,"r");



while($zeile = fgetcsv( $file , 2000 , "|" )) {

   $benutzername = $zeile[0];

   $passwort = $zeile[1];

   $alter = $zeile[2];

   $wohnort = $zeile[3];



   echo "$benutzername ist $alter Alt und Wohnt in $wohnort<br />";

}



fclose($file);

?>

In der while-Schleife gibt es fgetcsv. Dies nimmt jede Zeile und trennt sie mit einem Trennzeichen. Die Angabe $file ist die Datei, aus der jede Zeile gelesen werden soll, 2000 ist die Angabe in Bytes, wie lange die Zeile gelesen werden soll und das Trennzeichen ist in unserem Fall |.
Die Variable line ist jetzt ein Array. Das ist ein Speicher, in dem man mehrere Daten speichern und bearbeiten kann. Mit $line[0] können wir das erste Feld unserer Zeile ausgeben, mit $line[1] das zweite usw.

fopen – eine Datei öffnen

Wie wir oben gesehen haben, wird mit fopen eine Datei geöffnet. Der erste Parameter ist der Dateiname. Der zweite Parameter ist die Art, wie die Datei geöffnet werden soll, hier read, also lesen. Die wichtigsten Abkürzungen sind folgende:

  • a Öffnet die Datei zum Schreiben, indem der Dateizeiger an das Ende der Datei gesetzt wird. Wenn die Datei nicht existiert, wird versucht, sie zu erstellen.
  • a+ Macht fast dasselbe wie a, aber die Datei wird zum Lesen und Schreiben geöffnet.
  • r Die Datei wird zum Lesen geöffnet, der Dateizeiger befindet sich am Anfang der Datei.
  • r+ Entspricht fast r, aber die Datei wird zum Lesen und Schreiben geöffnet.
  • w Die Datei wird zum Schreiben geöffnet, die Länge der Datei wird auf 0 Byte gesetzt. Es wird versucht, die Datei zu erzeugen, wenn sie nicht existiert. Der Dateizeiger wird auf den Anfang der Datei gesetzt.
  • w+ Tut fast das gleiche wie w, aber die Datei wird zum Lesen und Schreiben geöffnet.

In eine Datei schreiben

Wie bei fopen wird zum Schreiben in eine Datei w, w+ oder eine andere Kurzform verwendet.

<?php

$file = fopen("datei.txt","w");

fputs($file,"Dieser Text ist nachher in der Datei");

fclose($file);

?>

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert