Signatur
Beschreibung
zip_read() liest den nächsten Eintrag aus einem mit zip_open() geöffneten ZIP-Archiv. Die Funktion arbeitet wie ein Iterator: Jeder Aufruf rückt den internen Zeiger einen Schritt weiter und gibt eine Ressource auf den gefundenen Eintrag zurück. Ist kein weiterer Eintrag vorhanden, wird false zurückgegeben.
Die zurückgegebene Eintrags-Ressource kann anschließend mit Funktionen wie zip_entry_name(), zip_entry_filesize(), zip_entry_open() und zip_entry_read() weiterverarbeitet werden, um Metadaten abzufragen oder den Inhalt des Eintrags zu lesen.
Hinweis: Die prozeduralen zip_*-Funktionen gelten als veraltet. Für neue Projekte wird empfohlen, stattdessen die objektorientierte Klasse ZipArchive zu verwenden, die eine vollständige und modernere API bietet.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $zip Pflicht | resource | Eine gültige ZIP-Ressource, die zuvor mit zip_open() geöffnet wurde. |
Rückgabewert
false, wenn keine weiteren Einträge vorhanden sind oder ein Fehler aufgetreten ist.Beispiele
Alle Einträge 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);
$size = zip_entry_filesize($entry);
echo "Eintrag: {$name} (unkomprimierte Größe: {$size} Bytes)\n";
}
zip_close($zip);
} else {
echo "Fehler beim Öffnen des Archivs. Fehlercode: {$zip}\n";
}
Inhalt einer bestimmten Datei aus dem ZIP-Archiv lesen
<?php
$zip = zip_open('/pfad/zum/archiv.zip');
if (is_resource($zip)) {
while ($entry = zip_read($zip)) {
if (zip_entry_name($entry) === 'dokumente/readme.txt') {
if (zip_entry_open($zip, $entry, 'r')) {
$inhalt = zip_entry_read($entry, zip_entry_filesize($entry));
echo "Inhalt von readme.txt:\n";
echo $inhalt;
zip_entry_close($entry);
}
}
}
zip_close($zip);
}
// Wichtig · Fallstricke
Veraltet: Die prozeduralen ZIP-Funktionen (zip_open, zip_read, zip_entry_* usw.) sind seit PHP 8.0 offiziell als veraltet markiert und sollten in neuen Projekten nicht mehr verwendet werden. Nutzen Sie stattdessen die Klasse ZipArchive.
Da zip_read() sowohl im Fehlerfall als auch am Ende des Archivs false zurückgibt, ist eine genaue Fehlerbehandlung erschwert. Prüfen Sie daher vorab mit is_resource(), ob das Archiv korrekt geöffnet wurde.