There's a small problem in Example #2 by Erik Jenssen listed above.
This line:
$entry = rar_entry_get($rar_file, $file);
Should actually read:
$entry = rar_entry_get($rar_file, $file->name);
As it's an object, and the second parameter of rar_entry_get needs to be a string (of the file path).
Rar::extract
(PECL rar >= 0.1)
Rar::extract — Extrait un élément d'une archive Rar
Description
Rar
Rar::extract() extrait les données de l'élément courant dans le dossier dir . Un nouveau fichier est créé dans le dossier dir , avec le nom de l'élément d'archive.
Liste de paramètres
- dir
-
Chemin vers le dossier dans lequel les fichiers seront extraits.
- filepath
-
Si filepath est spécifié à la place de dir , Rar::extract() extraira les données dans le fichier spécifié.
Valeurs de retour
Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.
Exemples
Exemple #1 Exemple avec Rar::extract()
<?php
$rar_file = rar_open('example.rar') or die("Impossible d'ouvrir l'archive Rar");
$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Impossible de trouver cet élément");
$entry->extract('/dir/to'); // crée le fichier /dir/to/Dir/file.txt
$entry->extract(false, '/dir/to/new_name.txt'); // crée le fichier /dir/to/new_name.txt
?>
Exemple #2 Comment extraire tous les fichiers d'une archive :
<?php
/* exemple fourni par Erik Jenssen aka erix */
$filename = "foobar.rar";
$filepath = "/home/foo/bar/";
$rar_file = rar_open($filepath.$filename);
$list = rar_list($rar_file);
foreach($list as $file) {
$entry = rar_entry_get($rar_file, $file);
$entry->extract("."); // extraction dans le dossier courant
}
rar_close($rar_file);
?>
Rar::extract
chris at chrisphillips dot co dot uk
15-Jun-2008 08:05
15-Jun-2008 08:05
Christian Boisjoli
27-Jul-2007 07:59
27-Jul-2007 07:59
As remarked by Lubomir Stefanov, example 2026 has an error. Another way to correct this error would be to replace the foreach loop as follows:
<?php
foreach($list as $entry) {
$entry->extract("."); // extract to the current dir
}
?>
Lubomir Stefanov
26-Feb-2007 04:45
26-Feb-2007 04:45
One edit for function by Erik Jenssen
Line $entry = rar_entry_get($rar_file, $file);
must be $entry = rar_entry_get($rar_file, $file->name);
because $file is a object
