Dateihandling mit PHP
Sie befinden sich: Home > Php
> Dateihandling mit PHP
Um Dateien mit PHP einlesen zu können benötig man zunächst ein sogenanntes
"dateihandle", was im Grunde genommen nichts anderes als eine allgemein
definierte PHP Variable darstellt.
1 <?php
2 $handle = fopen("c:/testdatei.txt","r");
3 /* an dieser Stelle wird das handle erzeugt
4 und mit der Funktion fopen()
praktisch mit
5 der Datei testdatei.txt zum Lesen
verknüpft
6 */
7 fclose ($handle);
8 /* lässt das handle von der Datei
9 und gibt sie somit wieder frei
10 */
11 $dataname="testdatei_2.txt";
12 $handle_2=fopen($dataname,"r");
13 /* versucht die in der Variablen
14 $dataname angegeben Datei zu öffnen
15 */
16 fclose($handle_2);
17 ?>
|
Das zweite Argument, im oben angeführten Beispiel "r", sagt aus wie die Datei
geöffnet werden soll.
"r" zum lesen öffnen
"r+" zum lesen und schreiben öffnen
"w" zum
schreiben öffnen leert die Datei
"w+" zum schreiben und lesen öffnen leert
die Datei
"a" Datei zum Anhängen öffnen,hierbei wird der Dateizeiger ans Ende
gesetzt wenn die Datei nicht existiert wird sie angelegt.
"a+" wie "a" jedoch
kann auch gelesen werden
Um in der geöffneten Datei schreiben und lesen zu können kommen folgende
Befehle zur Anwendung:
$var = fread ( handle, lenght ); liest eine durch lenght bestimme
menge Zeichen ein.
$var = fscanf ( handle , mixed string , variables
); liest eine Zeichenkette formatiert aus.
$var =fgetc ( handle ); liest das nächste Zeichen in der Datei ein
$var = fgets ( handle , lenght
); liest eine Zeichenkette mit maximal lenght Zeichen ein, wird häufig
verwendet um in Textdateien zeilenweise zu lesen, da ein EOL ( End Of Line ) als
Abbruchkriterium gilt.
fwrite ( handle , content ); schreibt die in
content definierte Zeichenkette in die Datei. content kann auch eine Variable
sein.
fseek ( handle , offset , where ); wird verwendet um den
Datenzeiger an eine bestimmte Stelle in der Datei zu setzen.
$var = ftell
( handle ); übergibt die aktuelle Position des Dateizeigers bezogen auf den
Dateianfang an $var.
feof( handle ); mit dieser Funktion kann der
Zustand des Handles überprüft werden
Im folgenden Beispiel werden alle oben angeführten Funktionen außer feof()
sowie fgetc () verwendet.
1 <?php
2 // Dateien mit PHP einlesen
3 $filename = "test.txt";
4 $somecontent = "Dieser Text geht in die Datei";
5
6 // prüft vor jedem anderen befehl ob die Datei
schreibbar
ist
7 if (is_writable($filename)) {
8 // im Folgenden wird die Datei im append
9 // mode ( Anhängemodus ) geöffnet
10 // der Dateizeiger wird automatisch
ans
11 // Ende der Datei gesetzt, wo dann
12 // durch den Befehl fwrite () der
Inhalt
13 // der Variablen $somecontent
geschrieben wird
14 if (!$handle = fopen($filename, "a")) {
15 echo "kann die Datei ($filename) nicht öffnen";
16 exit;
17 }
18
19 // schreibt den Inhalt von $somecontent in die Datei
20 if (fwrite($handle, $somecontent) === FALSE) {
21 echo "kann nicht in die Datei ($filename)
schreiben";
22 exit;
23 }
24 echo "Erfolg, habe ($somecontent) in die
Datei ($filename) geschrieben";
25
26 // Ermittelt die aktuelle Position des
27 // Dateizeigers und gibt diese aus
28 $position=ftell($handle);
29
30 echo "Der Dateizeiger steht
aktuell an der Stelle ($position)";
31
32 // setzt den Dateizeiger an die Anfangsposition der
Datei
33 fseek($handle,0);
34
35 // liest die erste Zeile aus und zeigt sie an
36 $buffer = fgets($handle, 4096);
37 echo $buffer;
38
39 } else {
40 echo "Die Datei $filename ist nicht schreibbar";
41 }
42 fclose($handle);
43 ?>
|
Um ganze Dateien in PHP einlesen zu können kann man auch die Funktion fread()
verwenden wie folgendes kleines Beispiel deutlicht macht.
1 <?php
2 // schreibt den kompletten Inhalt er Datei als
3 // String in die Variable $contents
4 // zu beachten ist das die Variable
$filename
5 // nicht nur den Dateinamen sondern
einen
6 // kompletten Pfad enthält. Dieser
sollte bei
7 // kritischen Dateioperationen immer
vom
8 // Stammverzeichnis aus angegeben
sein.
9
10 $filename = "/usr/local/something.txt";
11 $handle = fopen($filename, "r");
12 $contents = fread($handle, filesize($filename));
13 fclose($handle);
14 ?>
|
weiter Die Funktion date() in
PHP
|