Извлекает элемент из архива

# RarEntry::extract

(PECL rar >= 0.1)

RarEntry::extract — Извлекает элемент из архива

### Описание

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

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

    ?>

### Смотрите также

- RarEntry::getStream() - Получить обработчик для записи
- `rar://` wrapper

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open