Signatur
Beschreibung
gzgetc() liest genau ein Zeichen vom aktuellen Dateiposition-Zeiger einer mit gzopen() geöffneten gz-komprimierten Datei. Die Funktion ist das gz-Äquivalent zur Standard-PHP-Funktion fgetc(), arbeitet jedoch transparent mit GZIP-komprimierten Dateien.
Nach jedem Aufruf wird der interne Datei-Zeiger um eine Stelle vorgerückt. Am Dateiende gibt die Funktion false zurück. Typischerweise wird gzgetc() in einer Schleife verwendet, wenn zeichenweise Verarbeitung einer komprimierten Datei erforderlich ist — etwa bei der Analyse von Binärdaten oder beim Parsen von Protokolldateien.
Für das zeilenweise Lesen ist gzgets() effizienter, während gzread() beliebig viele Bytes in einem Aufruf lesen kann. gzgetc() eignet sich vor allem dann, wenn einzelne Zeichen eine semantische Bedeutung haben und separat ausgewertet werden müssen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $stream Pflicht | resource | Ein gültiges gz-Datei-Handle, das zuvor mit gzopen() im Lese-Modus geöffnet wurde. |
Rückgabewert
string der Länge 1 zurück, oder false am Dateiende oder bei einem Fehler.Beispiele
Zeichenweises Lesen einer gz-Datei
<?php
// Beispiel-GZ-Datei erzeugen
$gz = gzopen('/tmp/beispiel.gz', 'w');
gzwrite($gz, 'Hallo Welt!');
gzclose($gz);
// Zeichenweise lesen
$gz = gzopen('/tmp/beispiel.gz', 'r');
if ($gz === false) {
die('Datei konnte nicht geöffnet werden.');
}
$inhalt = '';
while (($zeichen = gzgetc($gz)) !== false) {
$inhalt .= $zeichen;
}
gzclose($gz);
echo $inhalt;
Zeichen zählen in einer komprimierten Datei
<?php
// GZ-Datei mit Inhalt anlegen
$gz = gzopen('/tmp/zaehl.gz', 'w');
gzwrite($gz, "Lorem ipsum dolor sit amet");
gzclose($gz);
// Alle Zeichen zählen
$gz = gzopen('/tmp/zaehl.gz', 'r');
$anzahl = 0;
while (gzgetc($gz) !== false) {
$anzahl++;
}
gzclose($gz);
echo "Anzahl Zeichen: " . $anzahl;
// Wichtig · Fallstricke
Performance: Da gzgetc() für jedes einzelne Zeichen aufgerufen wird, ist es bei großen Dateien deutlich langsamer als gzread() oder gzgets(). Für blockweises Lesen sollte stattdessen gzread() bevorzugt werden.
Fehlerbehandlung: Der Rückgabewert false tritt sowohl am regulären Dateiende als auch bei Lesefehlern auf. Mit gzeof() lässt sich prüfen, ob das Dateiende tatsächlich erreicht wurde.