(PECL rar >= 0.1)
RarEntry::extract — Extrait une entrée d'une archive
$dir,$filepath = "",$password = NULL,$extended_data = false
RarEntry::extract() extrait une entrée de données.
Ceci va créer un nouveau fichier dans le dossier spécifié par le paramètre
dir portant un nom identique au nom de l'entrée,
tant que le second argument n'est pas spécifié. Voir ci-dessous pour plus
d'informations.
dirfilepath n'est pas fourni. Si ces 2 paramètres
sont vides, l'extraction se fera dans le dossier courant.
filepathdir
et le nom original du fichier.
passwordfalse.
Si aucun mot de passe n'est fourni alors qu'il est nécessaire, cette méthode échouera
en retournant false. Vous pouvez vérifier si une entrée est cryptée avec la méthode
RarEntry::isEncrypted().
extended_datatrue, les informations étendues comme NTFS ACLs
et les informations sur le propriétaire Unix seront
définies dans les fichiers extraits, si ils sont bien définies
dans l'archives.
Avant la version 2.0.0, cette fonction ne gérait pas les chemins relatifs correctement. Utilisez la fonction realpath() comme contournement.
| Version | Description |
|---|---|
| PECL rar 3.0.0 |
Le paramètre extended_data a été ajouté.
|
| PECL rar 3.0.0 | Support des archives RAR contenant des entrées portant le même nom. |
Exemple #1 Exemple avec RarEntry::extract()
<?php
$rar_file = rar_open('example.rar') or die("Échec lors de l'ouverture de l'archive RAR");
$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("L'entrée demandée n'existe pas !");
$entry->extract('/dir/to'); // Création de /dir/to/Dir/file.txt
$entry->extract(false, '/dir/to/new_name.txt'); // Création de /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://