W3docs

zip_entry_open()

Die Funktion zip_entry_open() in PHP öffnet einen Eintrag in einem Zip-Archiv zum Lesen. Veraltet seit PHP 7.4, entfernt in PHP 8.0.

⚠️ Hinweis zur Veraltung: Die Funktion zip_entry_open() gehört zur veralteten zip-Erweiterung, die in PHP 7.4 als veraltet markiert und in PHP 8.0 entfernt wurde. Die folgenden Beispiele dienen nur als historische Referenz. Verwenden Sie für moderne PHP-Anwendungen stattdessen die Klasse ZipArchive.

zip_entry_open() bereitet einen einzelnen Eintrag (eine Datei) innerhalb eines geöffneten Zip-Archivs vor, sodass dessen Inhalt gelesen werden kann. Die Funktion arbeitet Hand in Hand mit zip_open(), zip_read() und zip_entry_read(): Sie öffnen das Archiv, navigieren zu einem Eintrag, öffnen diesen Eintrag und lesen ihn dann aus. Ohne vorherigen Aufruf von zip_entry_open() hat zip_entry_read() nichts zum Lesen.

Diese Seite behandelt die Funktionssignatur, ihre Parameter und den Rückgabewert, ein vollständiges Beispiel zum Lesen eines Eintrags sowie – am wichtigsten – den modernen ZipArchive-Ersatz, den Sie heute verwenden sollten.

Syntax

resource zip_entry_open(resource $zip, resource $zip_entry, string $mode = "r")

Parameter

ParameterBeschreibung
$zipDas Archiv-Handle, das von zip_open() zurückgegeben wird.
$zip_entryEin Eintrags-Handle, das von zip_read() zurückgegeben wird.
$modeDer Zugriffsmodus. Die veraltete zip-Erweiterung unterstützte stets nur Lesezugriff, daher ist dieser Wert praktisch immer "r".

Das vierte Argument $password, das in einigen alten Referenzen zu sehen ist, war in der gebündelten zip-Erweiterung nie funktional; es wird ignoriert.

Rückgabewert

Gibt bei Erfolg true oder bei Fehlschlag false zurück. Trotz des historischen Typhinweises resource erhalten Sie kein neues Handle zurück — Sie übergeben weiterhin dasselbe $zip_entry-Handle an zip_entry_read().

Verwendungsbeispiel

Beispiel: Eine Datei aus einem Zip-Archiv lesen

Öffnen Sie das Archiv, navigieren Sie zu einem Eintrag, öffnen Sie diesen Eintrag, lesen Sie ihn aus und bereinigen Sie anschließend:

$zip = zip_open("example.zip");

if (is_resource($zip)) {
    while ($zip_entry = zip_read($zip)) {
        // Prepare this entry for reading
        if (zip_entry_open($zip, $zip_entry, "r")) {
            $name     = zip_entry_name($zip_entry);
            $contents = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));

            echo "$name: $contents\n";

            zip_entry_close($zip_entry);
        }
    }
    zip_close($zip);
}

Hier öffnet zip_open() das Archiv, zip_read() springt nacheinander zu jedem Eintrag, zip_entry_open() macht den aktuellen Eintrag lesbar, und zip_entry_read() gibt dessen Bytes zurück. Pairen Sie immer jeden erfolgreichen Öffnen-Aufruf mit zip_entry_close(), und schließen Sie das Archiv mit zip_close(), wenn Sie fertig sind.

Moderne Alternative: ZipArchive-Klasse

Um dasselbe Ergebnis in PHP 8.0+ zu erzielen, verwenden Sie die eingebaute Klasse ZipArchive:

$zip = new ZipArchive;

if ($zip->open('example.zip') === true) {
    // Loop over every entry by index
    for ($i = 0; $i < $zip->numFiles; $i++) {
        $name     = $zip->getNameIndex($i);
        $contents = $zip->getFromIndex($i);

        echo "$name: $contents\n";
    }
    $zip->close();
}

ZipArchive benötigt keinen separaten Schritt zum „Öffnen des Eintrags": getFromIndex() (oder getFromName()) liest den Inhalt eines Eintrags direkt aus und funktioniert in jeder modernen PHP-Version.

Fazit

In diesem Artikel haben wir die PHP-Funktion zip_entry_open() besprochen und gezeigt, wie sie verwendet werden kann, um eine Datei in einem Zip-Archiv zu öffnen. Wir haben erklärt, was die Funktion tut, ihre Syntax erläutert und ein praktisches Beispiel bereitgestellt. Beachten Sie, dass zip_entry_open() veraltet ist und in PHP 8.0 entfernt wurde; verwenden Sie für moderne Projekte die Klasse ZipArchive, um Dateien in einem Zip-Archiv zu öffnen und zu lesen.

Übung

Übung
Was macht die Funktion ZipEntry::open() in PHP?
Was macht die Funktion ZipEntry::open() in PHP?
Was this page helpful?