Signatur
Beschreibung
rar_list() gibt eine Liste aller Einträge (Dateien und Verzeichnisse) zurück, die in einem geöffneten RAR-Archiv vorhanden sind. Jeder Eintrag wird als RarEntry-Objekt repräsentiert, über das Metadaten wie Name, Größe, Kompressionsgrad und CRC abgerufen sowie Inhalte extrahiert werden können.
Die Funktion ist das prozedurale Gegenstück zur Methode RarArchive::getEntries(). Sie wird typischerweise eingesetzt, um den Inhalt eines RAR-Archivs aufzulisten oder gezielt nach bestimmten Dateien darin zu suchen, bevor diese extrahiert werden.
Das Archiv muss zuvor mit rar_open() geöffnet worden sein und darf nicht bereits geschlossen worden sein. Ist das Archiv leer oder tritt ein interner Fehler auf, wird false zurückgegeben.
Hinweis: Diese Funktion erfordert die PECL-Erweiterung rar, die nicht standardmäßig in PHP enthalten ist und separat installiert werden muss.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $rarfile Pflicht | RarArchive | Ein RarArchive-Objekt, das mit rar_open() geöffnet wurde. Das Archiv muss gültig und noch geöffnet sein. |
Rückgabewert
RarEntry-Objekten zurück, das alle Einträge (Dateien und Verzeichnisse) des Archivs enthält. Im Fehlerfall oder wenn das Archiv nicht gelesen werden kann, wird false zurückgegeben.Beispiele
Alle Einträge eines RAR-Archivs auflisten
<?php
$archive = rar_open('/pfad/zum/archiv.rar');
if ($archive === false) {
die('Archiv konnte nicht geöffnet werden.');
}
$entries = rar_list($archive);
if ($entries === false) {
die('Einträge konnten nicht gelesen werden.');
}
foreach ($entries as $entry) {
printf(
"Name: %-40s | Größe: %10d Bytes | Komprimiert: %10d Bytes\n",
$entry->getName(),
$entry->getUnpackedSize(),
$entry->getPackedSize()
);
}
rar_close($archive);
Gezielt nach einer bestimmten Datei im Archiv suchen
<?php
$archive = rar_open('/pfad/zum/archiv.rar');
if ($archive === false) {
die('Archiv konnte nicht geöffnet werden.');
}
$entries = rar_list($archive);
$suchmuster = 'readme.txt';
$gefunden = false;
if ($entries !== false) {
foreach ($entries as $entry) {
if (basename($entry->getName()) === $suchmuster) {
echo 'Datei gefunden: ' . $entry->getName() . PHP_EOL;
echo 'Unkomprimierte Größe: ' . $entry->getUnpackedSize() . ' Bytes' . PHP_EOL;
$gefunden = true;
break;
}
}
}
if (!$gefunden) {
echo "'$suchmuster' wurde im Archiv nicht gefunden." . PHP_EOL;
}
rar_close($archive);
// Wichtig · Fallstricke
Voraussetzung: Die PECL-Erweiterung rar muss installiert und in der php.ini aktiviert sein (extension=rar). Sie ist nicht Teil der Standard-PHP-Distribution.
Verschlüsselte Archive: Bei passwortgeschützten RAR-Archiven kann das Lesen der Eintrags-Liste je nach Archivtyp ohne Passwort möglich sein — das Entpacken der Inhalte erfordert jedoch stets das korrekte Passwort, das an rar_open() übergeben werden muss.
RAR5-Format: Neuere RAR5-Archive (erstellt mit WinRAR 5+) werden von der PECL-rar-Erweiterung möglicherweise nicht vollständig unterstützt. Prüfe die Kompatibilität mit der installierten Erweiterungsversion.
Es handelt sich um eine prozedurale Wrapper-Funktion; die objektorientierte Alternative RarArchive::getEntries() ist gleichwertig und wird in modernem Code bevorzugt.