Start · Sprachen · PHP · Referenz · zip_entry_name

zip_entry_name

Funktion

Gibt den Namen (Dateiname inkl. Pfad) eines geöffneten ZIP-Verzeichniseintrags zurück.

seit PHP 4.1.0 Kategorie: io

Signatur

zip_entry_name(resource $zip_entry): string|false

Beschreibung

zip_entry_name() liefert den vollständigen Namen eines ZIP-Eintrags, wie er im Archiv gespeichert ist. Der Name enthält üblicherweise den relativen Pfad innerhalb des Archivs, z. B. ordner/datei.txt. Die Funktion gehört zur prozeduralen ZIP-API von PHP.

Um die Funktion verwenden zu können, muss ein gültiges ZIP-Eintrags-Handle übergeben werden, das typischerweise durch zip_read() in Verbindung mit zip_open() erzeugt wird. Der Eintrag muss dabei nicht mit zip_entry_open() geöffnet sein – der Name ist auch ohne das Öffnen des Inhalts abrufbar.

Die Funktion ist nützlich, um ZIP-Archive zu inspizieren, Dateinamen zu filtern oder gezielt bestimmte Einträge zu extrahieren. Für modernere Anwendungen empfiehlt sich allerdings die objektorientierte ZipArchive-Klasse, da die prozedurale ZIP-API seit PHP 8.0 als veraltet (deprecated) gilt und in zukünftigen Versionen entfernt werden kann.

Parameter

Name Typ Default Beschreibung
$zip_entry Pflicht resource Ein gültiges ZIP-Eintrags-Handle, wie es von zip_read() zurückgegeben wird.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Namen des ZIP-Eintrags als string zurück. Bei einem ungültigen Handle oder einem Fehler wird false zurückgegeben.

Beispiele

Alle Dateinamen eines ZIP-Archivs auflisten

<?php
$zip = zip_open('/pfad/zum/archiv.zip');

if (is_resource($zip)) {
    while ($entry = zip_read($zip)) {
        $name = zip_entry_name($entry);
        echo 'Eintrag: ' . $name . PHP_EOL;
    }
    zip_close($zip);
} else {
    echo 'Fehler beim Öffnen des Archivs: ' . $zip;
}
?>
Eintrag: bilder/foto.jpg Eintrag: dokumente/readme.txt Eintrag: index.html

Nur bestimmte Dateitypen aus einem ZIP-Archiv extrahieren

<?php
$zip = zip_open('/pfad/zum/archiv.zip');

if (is_resource($zip)) {
    while ($entry = zip_read($zip)) {
        $name = zip_entry_name($entry);

        // Nur .txt-Dateien verarbeiten
        if (str_ends_with($name, '.txt')) {
            zip_entry_open($zip, $entry);
            $inhalt = zip_entry_read($entry, zip_entry_filesize($entry));
            echo '=== ' . $name . ' ===' . PHP_EOL;
            echo $inhalt . PHP_EOL;
            zip_entry_close($entry);
        }
    }
    zip_close($zip);
}
?>
=== dokumente/readme.txt === Dies ist der Inhalt der readme.txt.

// Wichtig · Fallstricke

Deprecation-Hinweis: Die gesamte prozedurale ZIP-API (zip_open, zip_read, zip_entry_name usw.) ist seit PHP 8.0 als veraltet markiert und sollte nicht mehr für neue Projekte verwendet werden. Stattdessen empfiehlt sich die Klasse ZipArchive, die eine vollständige und aktiv gepflegte objektorientierte Schnittstelle bietet.

Einträge, die Verzeichnisse repräsentieren, enden im Namen typischerweise mit einem Schrägstrich (/). Dies sollte beim Extrahieren berücksichtigt werden, um Fehler beim Schreiben von Dateien zu vermeiden.