アーカイブのエントリを展開する

# 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` を返します。 パスワードが要求されているときにパスワードを指定していなければ、 このメソッドは失敗して `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

    /* erix こと Erik Jenssen によるサンプルです */

    $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