Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 ICQ Generator
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog Verzeichnis

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
 
 

Dateihandling mit PHP

Sie befinden sich: Home > Php > Dateihandling mit PHP

Um Dateien mit PHP einlesen zu können, benötigt man zunächst ein sogenanntes „dateihandle“, was im Grunde genommen nichts anderes als eine allgemein definierte PHP Variable darstellt.

<?php
$handle = fopen("c:/testdatei.txt","r");
/* an dieser Stelle wird das handle erzeugt
 und mit der Funktion fopen() praktisch mit
 der Datei testdatei.txt zum Lesen verknüpft
 */
fclose ($handle);
/* lässt das handle von der Datei
und gibt sie somit wieder frei
 */
$dataname="testdatei_2.txt";
$handle_2=fopen($dataname,"r");
/* versucht die in der Variablen
$dataname angegeben Datei zu öffnen
*/
fclose($handle_2);
?>

Erklärung:

Die Funktion fopen() verknüpft ein „handle“ mit einer Datei, um sie öffnen und lesen zu können. Das handle ist ein Zeiger, der auf ein bestimmtes Dateiobjekt verweist. In dem obigen Beispiel wird ein handle mit einer Textdatei namens „testdatei.txt“ erstellt. Mit der Funktion fopen() kann man die Datei zum Lesen öffnen. Danach schließt man das handle mit der Funktion fclose(), um das handle von der Datei zu lösen und sie somit wieder freizugeben.

Es ist auch möglich, eine Variable als Dateinamen zu verwenden. In dem Beispiel wird eine Variable namens $dataname erstellt, die den Namen der Datei enthält. Dann wird das handle mit der Funktion fopen() mit der in der Variablen $dataname angegebenen Datei verknüpft. Es wird versucht, die Datei zum Lesen zu öffnen. Danach schließt man das handle mit der Funktion fclose(), um das handle von der Datei zu lösen und somit wieder freizugeben

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.

<?php
// Dateien mit PHP einlesen
$filename = "test.txt";
$somecontent = "Dieser Text geht in die Datei";

/* prüft vor jedem anderen befehl ob die Datei schreibbar ist */
if (is_writable($filename)) {
// im Folgenden wird die Datei im append
// mode ( Anhängemodus ) geöffnet
// der Dateizeiger wird automatisch ans
// Ende der Datei gesetzt, wo dann
// durch den Befehl fwrite () der Inhalt
// der Variablen $somecontent geschrieben wird
if (!$handle = fopen($filename, "a")) {
 echo "kann die Datei ($filename) nicht öffnen";
 exit;
}

// schreibt den Inhalt von $somecontent in die Datei
if (fwrite($handle, $somecontent) === FALSE) {
 echo "kann nicht in die Datei ($filename) schreiben";
 exit;
}
echo "Erfolg, habe ($somecontent) in die
Datei ($filename) geschrieben";

// Ermittelt die aktuelle Position des
// Dateizeigers und gibt diese aus
$position=ftell($handle);

echo "Der Dateizeiger steht
aktuell an der Stelle ($position)";

/* setzt den Dateizeiger an die Anfangsposition der Datei */
fseek($handle,0);

// liest die erste Zeile aus und zeigt sie an
$buffer = fgets($handle, 4096);
echo $buffer;

} else {
 echo "Die Datei $filename ist nicht schreibbar";
}
fclose($handle);
?>

Erklärung:

Dieses Skript benutzt die PHP Funktionen is_writable(), fopen(), fwrite(), ftell() und fseek(), um eine Textdatei einzulesen, Text in die Datei zu schreiben und den Inhalt der Datei auszugeben.

Zuerst überprüft das Skript mit der Funktion is_writable(), ob die Datei test.txt schreibbar ist. Ist dies der Fall, wird die Datei im Anhängemodus (append mode) mit der Funktion fopen() geöffnet. Der Dateizeiger wird automatisch ans Ende der Datei gesetzt. Nun wird der Inhalt der Variablen $somecontent mit der Funktion fwrite() in die Datei geschrieben. Die aktuelle Position des Dateizeigers wird mit der Funktion ftell() ermittelt und ausgegeben. Mit der Funktion fseek() wird der Dateizeiger ans Anfang der Datei gesetzt und der Inhalt der Datei mit der Funktion fgets() ausgelesen und angezeigt. Abschließend wird die Datei wieder mit fclose() geschlossen.

 

Um ganze Dateien in PHP einlesen zu können, kann man auch die Funktion fread() verwenden, wie folgendes kleines Beispiel deutlich macht.

<?php
// schreibt den kompletten Inhalt er Datei als
// String in die Variable $contents
// zu beachten ist das die Variable $filename
// nicht nur den Dateinamen sondern einen
// kompletten Pfad enthält. Dieser sollte bei
// kritischen Dateioperationen immer vom
// Stammverzeichnis aus angegeben sein.
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

Erklärung:

Mit der oben stehenden PHP-Funktion kann der komplette Inhalt einer Datei als String in eine Variable $contents gelesen und gespeichert werden. Hierfür muss zunächst in der Variable $filename der komplette Pfad zu der Datei angegeben werden. Es ist darauf zu achten, dass der Pfad vom Stammverzeichnis aus angegeben wird, um kritische Dateioperationen sicher ausführen zu können.

Anschließend wird mit fopen() die Datei geöffnet und der Inhalt der Datei mit fread() in die Variable $contents gelesen und gespeichert. Zu beachten ist hierbei, dass als zweiter Parameter die Größe der Datei angegeben werden muss, damit alle Daten korrekt geladen werden.

Zuletzt wird die Datei mit fclose() geschlossen und der Inhalt der Datei kann nun in der Variablen $contents verwendet werden.



weiter Die Funktion date() in PHP