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.