rar open
RarArchive::open()
rar_open()
(PECL rar >= 2.0.0)
RarArchive::open() -- rar_open() — Öppna ett RAR-arkiv
Beskrivning
Objektorienterad stil (metod):
public static RarArchive::open(string $filename, string $password = NULL, callable $volume_callback = NULL): RarArchive|false
Procedurstil:
rar_open(string $filename, string $password = NULL, callable $volume_callback = NULL): RarArchive|false
Öppnar det angivna RAR-arkivet och returnerar en RarArchive-instans som representerar det.
Notera:
Om du öppnar ett multivolymarkiv ska sökvägen till den första volymen skickas som första parameter. Annars kommer inte alla filer att visas. Detta är designat så.
Parametrar
- filename
Sökväg till RAR-arkivet.
- password
Ett vanligt lösenord, om det behövs för att dekryptera rubrikerna. Det används även som standard om krypterade filer hittas. Observera att filer kan ha olika lösenord för rubrikerna och sinsemellan.
- volume_callback
En funktion som tar emot en parameter – sökvägen till volymen som inte hittades – och returnerar en sträng med rätt sökväg för volymen eller null om volymen inte finns eller inte är känd. Programmeraren bör se till att den angivna funktionen inte orsakar loopar, eftersom denna funktion anropas upprepade gånger om sökvägen som returnerades i ett tidigare anrop inte motsvarade den behövda volymen.
Att specificera denna parameter undviker meddelanden som annars skulle genereras när en volym inte hittas.
Varning:
Före version 2.0.0 hanterade denna funktion inte relativa sökvägar korrekt. Använd realpath() som en lösning.
Returnerar
Returnerar den begärda RarArchive-instansen eller false vid fel.
Ändringslogg
Version | Beskrivning |
---|---|
PECL rar 3.0.0 | volume_callback lades till. |
Exempel
Exempel #1 Objektorienterad stil
<?php $rar_arch = RarArchive::open('encrypted_headers.rar', 'samplepassword'); if ($rar_arch === FALSE) die("Kunde inte öppna filen."); $entries = $rar_arch->getEntries(); if ($entries === FALSE) die("Kunde inte hämta poster."); echo "Hittade " . count($entries) . " filer.\n"; if (empty($entries)) die("Inga giltiga poster hittades."); $stream = reset($entries)->getStream(); if ($stream === FALSE) die("Kunde inte öppna första filen."); $rar_arch->close(); echo "Innehållet i den första filen följer:\n"; echo stream_get_contents($stream); fclose($stream); ?>
Utdata från exemplet ovan kommer att likna:
Hittade 2 filer. Innehållet i den första filen följer: Innehåll i krypterad fil 1.
Exempel #2 Procedurstil
<?php $rar_arch = rar_open('encrypted_headers.rar', 'samplepassword'); if ($rar_arch === FALSE) die("Kunde inte öppna filen."); $entries = rar_list($rar_arch); if ($entries === FALSE) die("Kunde inte hämta poster."); echo "Hittade " . count($entries) . " filer.\n"; if (empty($entries)) die("Inga giltiga poster hittades."); $stream = reset($entries)->getStream(); if ($stream === FALSE) die("Kunde inte öppna första filen."); rar_close($rar_arch); echo "Innehållet i den första filen följer:\n"; echo stream_get_contents($stream); fclose($stream); ?>
Exempel #3 Volume Callback
<?php /* I detta exempel finns det en volym som heter multi_broken.part1.rar * vars nästa volym heter multi.part2.rar */ function resolve($vol) { if (preg_match('/_broken/', $vol)) return str_replace('_broken', '', $vol); else return null; } $rar_file1 = rar_open(dirname(__FILE__).'/multi_broken.part1.rar', null, 'resolve'); $entry = $rar_file1->getEntry('file2.txt'); $entry->extract(null, dirname(__FILE__) . "/temp_file2.txt"); ?>
Se även
- RarArchive::getEntries() - Hämta en fullständig lista över poster från RAR-arkivet
- rar://-omslaget
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/rararchive.open.php
PHP
Funktioner
Funktionsreferens
Komprimerings- och arkivtillägg
Rar_—_Rar_Arkivering
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.