RarEntry::extract
(PECL rar >= 0.1)
RarEntry::extract — アーカイブのエントリを展開する
説明
public 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);?>