rar open

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

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

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.