Dateioperationen: Lesen und Schreiben
Um auf eine Datei zugreifen zu können (egal ob sie gelegen oder erstellt werden soll), muss zunächst ein Zeiger (Filepointer) gesetzt werden:
if($fp = fopen("datei.txt", "r")) {
while(!feof($fp)) {
$zeile = fgets($fp, 8192);
...$zeile verarbeiten
}
} else {
echo "Konnte Datei nicht öffnen";
}
Der zweite Parameter in fopen() gibt den Modus an, in welchem die Datei behandelt werden soll:
Wert | Beschreibung |
---|---|
r | öffnet die Datei nur zum Lesen und positioniert den Dateizeiger auf den Anfang der Datei |
r+ | Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei. |
w | Öffnet die Datei nur zum Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert wird versucht sie anzulegen. |
w+ | Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen. |
a | Öffnet die Datei nur zum Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen. |
a+ | Öffnet die Datei zum Lesen und Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen. |
Um die Datei explizit als Binär-Datei zu behandeln, muss (unter Windows) der Buchstabe "b" im Modus hinzugefügt werden.
fgets($fp, $max) liest maximal $max Zeichen oder bricht früher ab, wenn es vorher auf einen Zeilenumbruch oder das Dateiende stößt. Letzteres kann per feof($fp) abgefragt werden und eigent sich hervorragend als Abbruchkriterium einer while-Schleife. Das gegenstück zu fgets() ist fputs()
Eine Besonderheit bietet fopen(): wenn statt einer lokalen Datei eine URL übergeben wird, wird von dieser gelesen. Damit können beispielsweise Newsinhalte von fremden Sites ausgewertet werden.