Start · Sprachen · PHP · Referenz · rar_list

rar_list

Funktion

Liefert ein Array aller <code>RarEntry</code>-Objekte, die im angegebenen RAR-Archiv enthalten sind.

seit PHP 2.0.0 Kategorie: io

Signatur

rar_list(RarArchive $rarfile): array|false

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

Typ
array|false
Beschreibung
Gibt ein Array von 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);
Name: bilder/foto1.jpg | Größe: 102400 Bytes | Komprimiert: 89432 Bytes Name: dokumente/readme.txt | Größe: 1024 Bytes | Komprimiert: 512 Bytes

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);
Datei gefunden: dokumente/readme.txt Unkomprimierte Größe: 1024 Bytes

// 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.