RarEntry::extract
(PECL rar >= 0.1)
RarEntry::extract — Извлекает элемент из архива
Описание
$dir
[, string $filepath
= ''
[, string $password
= NULL
[, bool $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
в случае возникновения ошибки.
Список изменений
Версия | Описание |
---|---|
3.0.0 |
Был добавлен параметр extended_data .
|
3.0.0 | Исправлена поддержка RAR архивов с повторяющимися именами элементов. |
Примеры
Пример #1 Пример с RarEntry::extract()
<?php
$rar_file = rar_open('example.rar') or die("Failed to open Rar archive");
$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");
$entry->extract('/dir/to'); // create /dir/to/Dir/file.txt
$entry->extract(false, '/dir/to/new_name.txt'); // create /dir/to/new_name.txt
?>
Пример #2 Как извлечь все файлы из архива:
<?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);
$entry->extract("."); // extract to the current dir
}
rar_close($rar_file);
?>
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для сжатия и архивации
- Архивирование Rar
- Функция RarEntry::extract() - Извлекает элемент из архива
- Функция RarEntry::getAttr() - Возвращает атрибуты элемента архива
- Функция RarEntry::getCrc() - Возвращает CRC элемента архива
- Функция RarEntry::getFileTime() - Возвращает последнее время изменения элемента
- Функция RarEntry::getHostOs() - Возвращает оригинальную ОС элемента
- Функция RarEntry::getMethod() - Возвращает метод компрессии элемента
- Функция RarEntry::getName() - Возвращает имя элемента
- Функция RarEntry::getPackedSize() - Возвращает размер сжатого элемента
- Функция RarEntry::getStream() - Get file handler for entry
- Функция RarEntry::getUnpackedSize() - Возвращает размер элемента в распакованном состоянии
- Функция RarEntry::getVersion() - Возвращает минимальную версию программы RAR, необходимую для распаковки элемента
- Функция RarEntry::isDirectory() - Test whether an entry represents a directory
- Функция RarEntry::isEncrypted() - Test whether an entry is encrypted
- Функция RarEntry::__toString() - Get text representation of entry
Коментарии
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.
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);
?>