(PECL rar >= 0.1)
RarEntry::extract — Извлекает элемент из архива
$dir
,$filepath
= "",$password
= NULL,$extended_data
= false
RarEntry::extract() извлекает содержимое элемента.
При этом создаётся новый файл в указанной директории
dir
с именем совпадающим с именем элемента,
если только не задан второй аргумент. Смотрите подробнее ниже.
dir
Путь к директории, куда необходимо извлечь файлы. Этот
параметр учитывается только если не указан параметр
filepath
. Если оба параметра не указаны,
то файлы извлекаются в текущую директорию.
filepath
Путь (полный или относительный) содержит директорию
и имя извлекаемого файла. Этот параметр переопределяет
и параметр dir
и оригинальное имя файла.
password
Пароль используется для расшифровки текущего элемента. Если
элемент не зашифрован, то этот параметр не будет использован и
его можно не указывать. Если же этот параметр не указан, а
элемент зашифрован, то будет использован пароль, переданный
функции rar_open(), если её вызывали.
Если передан неверный пароль, явно или неявно через
rar_open(), то проверка CRC будет неудачной
и будет возвращён false
.
Вы можете проверить является ли элемент зашифрованным с помощью
RarEntry::isEncrypted().
extended_data
Если true
, то в извлекаемый файл будет добавлена
дополнительная информация, такая как NTFS ACL и владелец в
системе Unix, если они присутствовали в архиве.
До версии 2.0.0, не обрабатывала относительные пути корректно. Используйте для этой ситуации realpath().
Функция возвращает true
, если выполнилась успешно, или false
, если возникла ошибка.
Версия | Описание |
---|---|
PECL rar 3.0.0 |
Был добавлен параметр extended_data .
|
PECL rar 3.0.0 | Исправлена поддержка RAR архивов с повторяющимися именами элементов. |
Пример #1 Пример использования RarEntry::extract()
<?php
$rar_file = rar_open('example.rar') or die("Не удалось открыть Rar архив");
$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Не удалось найти такую запись");
$entry->extract('/dir/to'); // создание /dir/to/Dir/file.txt
$entry->extract(false, '/dir/to/new_name.txt'); // создание /dir/to/new_name.txt
?>
Пример #2 Как извлечь все файлы из архива:
<?php
/* Пример от 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("."); // извлечь в текущий каталог
}
rar_close($rar_file);
?>