fgetc

fgetc($stream)

Liest ein Byte aus einer offenen Datei und verschiebt den Zeiger. Am Ende der Datei gibt sie false zurück.

Parameter

  • $stream – eine offene Datei aus fopen().

Beispiele

$file = sys_get_temp_dir() . "/garth-beispiel.txt";
file_put_contents($file, "Apfel\nKäse\n");
$f = fopen($file, "r");
echo fgetc($f) . fgetc($f); // Ap
// die Anzahl der Zeilen, Zeichen für Zeichen
rewind($f);
$lines = 0;
while (($char = fgetc($f)) !== false) {
    if ($char === "\n") $lines++;
}
echo $lines; // 2
// sie liest Bytes: der Buchstabe ä belegt in UTF-8 zwei Bytes
fseek($f, 7);
echo bin2hex(fgetc($f)) . " " . bin2hex(fgetc($f)); // c3 a4
fclose($f);
unlink($file);

Worauf Sie achten sollten

  • Sie liest Bytes, keine Zeichen. Umlaute in UTF-8 teilt sie auf zwei Aufrufe auf.
  • Schreiben Sie die Bedingung der Schleife als ($char = fgetc($f)) !== false. Eine einfache Bedingung würde das Zeichen "0" für das Ende halten.
  • Byteweises Lesen ist langsam. Große Dateien lesen Sie zeilenweise mit fgets() oder in Blöcken mit fread().

Verwandte Funktionen:
fgets()
fread()
feof()
fopen()