PHP Conference Nagoya 2025

RarEntry::extract

(PECL rar >= 0.1)

RarEntry::extractExtrait une entrée d'une archive

Description

public RarEntry::extract(
    string $dir,
    string $filepath = "",
    string $password = NULL,
    bool $extended_data = false
): bool

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.

Liste de paramètres

dir

Chemin vers le dossier où le fichier extrait devra être créé. Ce paramètre sera utilisé uniquement si le paramètre filepath n'est pas fourni. Si ces 2 paramètres sont vides, l'extraction se fera dans le dossier courant.

filepath

Chemin (relatif ou absolut) contenant le dossier et le nom du fichier à extraire. Ce paramètre écrase à la fois le paramètre dir et le nom original du fichier.

password

Le mot de passe à utiliser pour décrypter cette entrée. Si l'entrée n'est pas crypté, cette valeur ne sera pas utilisée et peut être omise. Si ce paramètre est omis et que l'entrée est cryptée, le mot de passe fourni à la fonction rar_open(), si il existe, sera utilisé. Si un mauvais mot de passe est fourni, soit explicitement ou implicitement via la fonction rar_open(), la vérification CRC échouera et cette méthode échouera, en retournant false. 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_data

Si vaut true, 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.

Avertissement

Avant la version 2.0.0, cette fonction ne gérait pas les chemins relatifs correctement. Utilisez la fonction realpath() comme contournement.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

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.

Exemples

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);

?>

Voir aussi

add a note

User Contributed Notes 2 notes

up
7
nelson_km_94 at hotmail dot com
9 years ago
Example #2 has a mistake.

This one works fine:
<?php

/* example by 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->getName());
$entry->extract("."); // extract to the current dir
}
rar_close($rar_file);

?>
up
0
Anonymous
11 years ago
If the entry to extract is a directory as per RarEntry::isDirectory(), this method does not seem to extract the entries below that directory as one might expect from using the command-line RAR or WinRAR.
To Top