RarArchive::open

rar_open

(PECL rar >= 2.0.0)

RarArchive::open -- rar_open — Ouvre une archive RAR

Description

Style orienté objet (méthode) :

public static function RarArchive::open(string $filename, string $password = NULL, callable $volume_callback = NULL): RarArchive|false

Style procédural :

function rar_open(string $filename, string $password = NULL, callable $volume_callback = NULL): RarArchive|false

Ouvre une archive RAR et retourne une instance RarArchive la représentant.

Note: Si on tente d'ouvrir une archive multivolume, le chemin du premier volume doit ĂȘtre passĂ© comme premier paramĂštre. Sinon, l'ensemble des fichiers ne sera pas affichĂ©.

Liste de paramĂštres

filename
Chemin vers l'archive Rar.
password
Un mot de passe en texte brut, si nĂ©cessaire pour dĂ©chiffrer l'en-tĂȘte. Il sera Ă©galement utilisĂ© par dĂ©faut si des fichiers cryptĂ©s sont trouvĂ©s. Il est Ă  noter que les fichiers peuvent avoir un mot de passe diffĂ©rent de celui des en-tĂȘtes et diffĂ©rents entre eux.
volume_callback
Une fonction qui reçoit un seul paramĂštre - le chemin du volume non trouvĂ© - et retourne une chaĂźne de caractĂšres contenant le chemin correct du volume ou null si le volume n'existe pas ou le chemin n'est pas connu. Attention Ă  ne pas crĂ©er de boucle infinie sachant que la fonction sera appelĂ©e indĂ©finiment si le chemin retournĂ© dans un prĂ©cĂ©dent appel ne correspond pas au volume dĂ©sirĂ©. Le fait de spĂ©cifier ce paramĂštre Ă©vitera une alerte qui devrait ĂȘtre Ă©mise lorsqu'un volume n'est pas trouvĂ© ; une implĂ©mentation qui ne retourne que null peut toutefois ĂȘtre utilisĂ©e pour Ă©viter une telle alerte.
Avertissement

Avant la version 2.0.0, cette fonction ne gérait pas correctement les chemins relatifs. Utiliser la fonction realpath() pour corriger ce bogue.

Valeurs de retour

Retourne l'instance RarArchive requise ou false si une erreur survient.

Historique

Version Description
PECL rar 3.0.0 Le paramÚtre volume_callback a été ajouté.

Exemples

Exemple #1 Style orienté objet

<?php
$rar_arch
= RarArchive::open('encrypted_headers.rar', 'samplepassword');
if (
$rar_arch === FALSE)
die(
"Échec lors de l'ouverture du fichier");

$entries = $rar_arch->getEntries();
if (
$entries === FALSE)
die(
"Échec lors de la rĂ©cupĂ©ration des entrĂ©es");

echo
count($entries) . " fichier(s) trouvé(s).\n";

if (empty(
$entries))
die(
"Aucune entrée valide n'a été trouvée.");

$stream = reset($entries)->getStream();
if (
$stream === FALSE)
die(
"Échec lors de l'ouverture du premier fichier");

$rar_arch->close();

echo
"Contenu du premier fichier :\n";
echo
stream_get_contents($stream);

fclose($stream);
?>

Résultat de l'exemple ci-dessus est similaire à :

2 fichier(s) trouvé(s).
Contenu du premier fichier :
Encrypted file 1 contents.

Exemple #2 Style procédural

<?php
$rar_arch
= rar_open('encrypted_headers.rar', 'samplepassword');
if (
$rar_arch === FALSE)
die(
"Échec lors de l'ouverture du fichier");

$entries = rar_list($rar_arch);
if (
$entries === FALSE)
die(
"Échec lors de la rĂ©cupĂ©ration des entrĂ©es");

echo
count($entries) . " fichier(s) trouvé(s).\n";

if (empty(
$entries))
die(
"Aucune entrée valide n'a été trouvée.");

$stream = reset($entries)->getStream();
if (
$stream === FALSE)
die(
"Échec lors de l'ouverture du premier fichier");

rar_close($rar_arch);

echo
"Contenu du premier fichier :\n";
echo
stream_get_contents($stream);

fclose($stream);
?>

Exemple #3 Fonction de rappel pour le volume

<?php
/* Dans cet exemple, il y a un volume nommé multi_broken.part1.rar
* dont le volume suivant est nommé 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");
?>

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.