Befassen wir uns mit den Dateizeiger Resourcen (resource). Über diese wir jede Menge Dateioperationen durchführen können.
Aber fangen wir langsam an.
Datei mit fopen öffnen (resource erstellen) und mit fread lesen:
<?php // liest den Inhalt einer Datei in einen String $fileurl = "/usr/local/etwas.txt"; $myresource = fopen($fileurl, "r"); //zweiter Parameter siehe mode unterhalb $contents = fread($myresource, filesize($filename)); //file wird bis zu length (zweiter opt. Parameter gelesen) hier komplett fclose($myresource);
mode Parameter für fopen:
- ‚r‘: readonly, Dateizeiger auf Anfang
- ‚r+‘: read + write, Dateizeiger auf Anfang
- ‚w‘: write only, Dateizeiger auf Anfang, Datei wird zuvor auf Länge 0 gekürzt, neu erstellt wenn nicht existent
- ‚w+‘: read + write, Dateizeiger auf Anfang, Datei wird zuvor auf Länge 0 gekürzt, neu erstellt wenn nicht existent
- ‚a‘: write only, Dateizeiger auf Ende, neu erstellt wenn nicht existent
- ‚a+‘: read + write, Dateizeiger auf Ende, neu erstellt wenn nicht existent
- ‚x‘: erzeugen und write only öffnen; Schlägt fehl, sofern bereits existent
- ‚x+‘: erzeugen und write + read öffnen; Schlägt fehl, sofern bereits existent
- ‚c‘: write only, Datei anlegen, wenn nicht existierend, ansonsten Dateizeiger auf Anfang
- ‚c+‘ read + write, ansonsten wie ‚c‘.
// liest den Inhalt einer Datei in einen String $fileurl = "/usr/local/datei.txt"; $myresource = fopen($fileurl, "w"); //zweiter Parameter siehe mode unterhalb fwrite($fp, 'blubberdings..'); fclose($myresource);
Merkenswert: f*() Funktionen arbeiten mit einer File Resource, file*() Funktonen mit einem Dateinamen.. 😉
fputcsv(file, fields, seperator, enclosure, escape_char)
Parameter:
- file: erforderlich, resource in die geschrieben werden soll
- fields: erforderlich, Array aus dem die Daten kommen
- separator: optional, Trennungszeichen, default ‚,‘
- enclosure: optionales Anführungssymbol des Feldes, default ‚ “ ‚
- escape_char: optionals Escape Zeichen, default ‚\‘
$multi = array ( array('a1a', 'b2b', 'c3c', 'd4d'), array('123', '456', '789'), array('"a1a"', '"b2b"') ); $fp = fopen('datei.csv', 'w'); foreach ($multi as $single) { fputcsv($fp, $single); } fclose($fp); /* Inhalt datei.csv: a1a,b2b,c3c,d4d 123,456,789 """a1a""","""b2b""" */
fprintf(): Siehe Ausgabefunktionen
fpassthru: Alle verbleibenden Daten eines Dateizeigers sofort ausgeben. Beispiel mit Bilddatei:
<?php $name = 'img/mypic.png'; $fp = fopen($name, 'rb'); //b: binär erzwingen, insb. für Win Kompatibilität sinnvoll //Header-Einträge header("Content-Type: image/png"); header("Content-Length: " . filesize($name)); // Bild ausgeben mit fpassthru fpassthru($fp); exit;