Start · Sprachen · PHP · Referenz · gzgetss

gzgetss

Funktion

Liest eine Zeile aus einem gz-komprimierten Dateizeiger und entfernt dabei HTML- und PHP-Tags.

seit PHP 4.0.0 Kategorie: io

Signatur

gzgetss(resource $zp, int $length = 0, string $allowable_tags = ''): string|false

Beschreibung

gzgetss() ist das gz-komprimierte Äquivalent zu fgetss() und kombiniert die Funktion gzgets() mit automatischem Tag-Stripping. Es liest eine Zeile aus einer mit gzopen() geöffneten komprimierten Datei und entfernt alle HTML- und PHP-Tags aus der gelesenen Zeile, bevor sie zurückgegeben wird.

Der Parameter length begrenzt die maximale Anzahl der zu lesenden Zeichen. Wird er weggelassen oder auf 0 gesetzt, wird die Zeile bis zum Zeilenende oder bis zum Ende der Datei gelesen. Mit allowable_tags können bestimmte HTML-Tags angegeben werden, die nicht entfernt werden sollen.

Diese Funktion ist sinnvoll, wenn komprimierte Textdateien mit HTML-Inhalten verarbeitet werden und der Klartext ohne Markup benötigt wird, beispielsweise bei der Indexierung oder Textanalyse von komprimierten HTML-Dokumenten.

Hinweis: gzgetss() ist seit PHP 7.3.0 als veraltet (deprecated) markiert und in PHP 8.0.0 vollständig entfernt worden. Für neuen Code sollte stattdessen gzgets() in Verbindung mit strip_tags() verwendet werden.

Parameter

Name Typ Default Beschreibung
$zp Pflicht resource Ein gültiger gz-Datei-Ressource-Zeiger, der zuvor mit gzopen() geöffnet wurde.
$length int 0 Maximale Anzahl der zu lesenden Bytes (inklusive Zeilenumbruch). Bei 0 wird bis zum Zeilenende gelesen.
$allowable_tags string Eine Zeichenkette mit HTML-Tags, die nicht entfernt werden sollen, z. B. '<b><i>'.

Rückgabewert

Typ
string|false
Beschreibung
Gibt die gelesene Zeile ohne HTML- und PHP-Tags als Zeichenkette zurück. Bei einem Fehler oder am Ende der Datei wird false zurückgegeben.

Beispiele

Komprimierte HTML-Datei zeilenweise als Klartext lesen (PHP &lt; 8.0)

<?php
// Nur für PHP 5.x / 7.x gültig (deprecated seit 7.3, entfernt in 8.0)
$gz = gzopen('inhalt.html.gz', 'r');
if ($gz === false) {
    die('Datei konnte nicht geöffnet werden.');
}

while (!gzeof($gz)) {
    $zeile = gzgetss($gz, 4096, '<b><strong>');
    if ($zeile !== false) {
        echo $zeile;
    }
}

gzclose($gz);
(Textinhalt der komprimierten HTML-Datei ohne Tags, außer <b> und <strong>)

Moderner Ersatz mit gzgets() und strip_tags() (PHP 8+)

<?php
// Empfohlene Alternative für PHP 8.0 und neuer
$gz = gzopen('inhalt.html.gz', 'r');
if ($gz === false) {
    die('Datei konnte nicht geöffnet werden.');
}

while (!gzeof($gz)) {
    $zeile = gzgets($gz, 4096);
    if ($zeile !== false) {
        echo strip_tags($zeile, '<b><strong>');
    }
}

gzclose($gz);
(Textinhalt der komprimierten HTML-Datei ohne Tags, außer <b> und <strong>)

// Wichtig · Fallstricke

Deprecation: gzgetss() wurde mit PHP 7.3.0 als veraltet markiert (E_DEPRECATED) und in PHP 8.0.0 vollständig aus der Sprache entfernt. Jede Verwendung in modernem Code sollte durch eine Kombination aus gzgets() und strip_tags() ersetzt werden.

Sicherheit: Das Entfernen von HTML-Tags mittels gzgetss() (bzw. strip_tags()) bietet keinen zuverlässigen XSS-Schutz. Für die sichere Ausgabe von Benutzereingaben in HTML sollte stets htmlspecialchars() verwendet werden.