PHP: Einführung für Anfänger


* Einführung * Installation * Paketmanager * Grundlagen * Shells * Entwicklung * KDE * Skriptsprachen * AWK * PHP * Perl * Apache * Veranstaltungen * Schulungen * Bücher * Netzwerk * OpenOffice * OpenSource * Samba

PHP


© <a href="http://www.fotolia.de/p/29003">Ljupco Smokovski</a> - FOTOLIA
Home
PHP von der Kommandozeile
PHP und HTML im Zusammenspiel
Variablen und Zuweisungen
Arrays
Vergleichsoperatoren
Verzweigungen
Schleifen
Funktionen
Datei schreiben
Datei lesen
Formulare verarbeiten
Sortieren von Dateinamen
Anzeige:

PHP Kurse für
Anfänger und Fortgeschrittene

Kontakt
Haftung
Impressum
Problem Hilfe Startseite


Datei schreiben


Im Folgenden sehen wir, wie man Daten in eine Datei (file) schreibt.

Das folgende PHP-Skript ist ein einfaches Beispiel dafür:

<?php

$daten = "Dieser Text steht nachher in der Datei!";

// Festlegen des Dateinamens
$datei_name = "test_datei.txt";

/*
Die Datei wird zum schreiben geöffnet
und falls der Dateiname bereits vorhanden ist,
wird der komplette alte Inhalt vorher gelöscht!
*/
$fp = fopen($datei_name, "w");

/*
 Daten in Datei schreiben.
Dieser Befehl kann widerholt aufgerufen werden.
*/
fwrite($fp, $daten);

// Die Datei wird geschlossen.
fclose($fp);

?>

Auch wenn die einzelnen Kommandos in dem Skript bereits erklärt sind, wollen wir uns die darin verwendeten Funktionen im Detail anschauen:

fopen()

Mit fopen() öffnet man eine Datei und zwar je nach Parameter in verschiedenen Modi , wie zum Beispiel Lesen oder Schreiben.

int fopen(string filename, string modus)

Als Dateiname "filename" kann sowohl ein  Dateiname mit oder ohne Pfad verwendet werden oder auch eine Datei, die sich irgendwo im Internet befindet, also "http://www.problem-hilfe.de/linux/h/PHP/Datei_schreiben.html". Im Internet befindliche Dateien können natürlich in der Regel nur lesend und nicht schreibend geöffnet werden.

Für den Modus gibt es viele verschiedene Möglichkeiten, die in der folgenden Tabelle zusammengestellt sind:
w
Die angegebene Datei wird zum Schreiben geöffnet und falls die Datei bereits existiert, wird der alte Inhalt überschrieben, d.h. gelöscht. Anders ausgedrückt: Mit der Option "w" wird der Dateizeiger auf den Anfang der Datei gesetzt und die Länge der Datei auf 0 (also 0 Bytes) gesetzt. Existiert die Datei nicht, wird sie angelegt. Letzteres allerdings nur, wenn das Skript Schreibberechtigung in dem Verzeichnis hat, in das die Datei geschrieben werden soll.
a
Es gilt das für die Option "w" gesagte. Einen Unterschied gibt es nur, falls die Datei bereits existiert. Dann werden die Daten ans Ende der Datei angehängt, d.h. der Dateizeiger wird ans Ende des Files gesetzt.
r
Die angegebene Datei wird zum Lesen geöffnet. Der Dateizeiger - anderes würde wohl keinen Sinn ergeben - wird an den Anfang des Files gesetzt.
r+
Die angegebene Datei wird zum Lesen und Schreiben geöffnet. Der Dateizeiger  wird an den Anfang des Files gesetzt. Existiert die Datei nicht, wird sie nicht angelegt!
w+
Wie r+, allerdings wird versucht eine nicht existierende Datei anzulegen.
a+
Wie w+, allerdings wird der Dateizeiger an das Ende des Files gesetzt.

Beispiele für fopen():

$fp = fopen("beispiel_daten.txt", "r")  // Dateiname ohne Pfad bzw. relativer Pfad

$fp = fopen("/home/tux/beispiel_daten.txt", "r")  // Dateiname mit abslutem Pfad

$fp = fopen("../php-beispiele/beispiel.txt", "w")  // Dateiname mit relativem Pfad

$fp = fopen("http://www.was-weiss-ich-domain.de/beispiel.txt", "r")  // Datei befindet sich im Internet

$fp = fopen("ftp//benutzer/passwort@was-weiss-ich-domain.de/bsp.txt", "r")  // Zugriff mit FTP


fwrite()

Mit dem Befehl fwrite() kann man Daten in eine Datei schreiben, die vorher mit fopen() geöffnet wurde.

int fwrite(int fp, string daten [,int laenge])

"fp" bezeichnet den Dateizeiger (file pointer) der als Rückgabewert von fopen() geliefert wird. In den obigen Beispielen wurde er der Variablen $fp zugewiesen.
"daten" ist ein String in dem die zu schreibenden Daten stehen. Man kann optional, d.h. wenn man will, eine Länge "laenge" angeben. Damit sagt man, dass der String "daten" nur bis maximal laenge-Bytes in die Datei geschrieben wird.

fclose()

Jede Datei, die zuvor mit fopen() geöffnet worden ist, muss vor dem Ende des Skriptes mit fclose() geschlossen werden.

int fclose(int fp)
Einziger Parameter des fclose()-Befehls ist der Dateizeiger fp.

Funktion zum Schreiben eines Array-Inhaltes in eine Datei

Wir stellen nun eine Funktion vor, mit der man ein komplettes Array in eine Datei schreiben kann:

<?

function write_data($data, $fname) {
 
  $fp = fopen($fname, "w");

  foreach ($data as $key => $value) {
    // echo "$key: $value\n";
    fwrite($fp, "$key: $value\n");
  }

  fclose($fp);
}

$test["l"]= "Linux";
$test["i"] = "ist";
$test["s"] = "super";
write_data($test, "test.txt");

?>


Wichtig: Das Verzeichnis, in das "test.txt" geschrieben werden soll, muss die entsprechende Schreibberechtigung haben!

© Copyright 2007 - 2010, Bernd Klein mit freundlicher Unterstützung von Bodenseo, Linux-Kurse und Schulungen,
Foto linke Seite (Mann mit Strick und Colt): Foto: © Ljupco Smokovski, fotolia 984022