(PECL rar >= 0.1)
RarEntry::extract — アーカイブのエントリを展開する
$dir,$filepath = "",$password = NULL,$extended_data = false
RarEntry::extract() は、エントリのデータを展開します。
二番目の引数が指定されていなければ、
指定した dir にエントリの名前と同名の新しいファイルを作成します。
詳細は以下を参照ください。
dirfilepath
が指定されていないときだけです。両方のパラメータが空の場合は、
カレントディレクトリへの展開を試みます。
filepathdir
の内容と元のファイル名を両方とも上書きします。
passwordfalse を返します。
パスワードが要求されているときにパスワードを指定していなければ、
このメソッドは失敗して false を返します。
エントリが暗号化されているかどうかを知るには RarEntry::isEncrypted()
を使います。
extended_datatrue にすると、NTFS の ACL や Unix のオーナー情報といった拡張情報が
アーカイブに設定されていれば、取り出したファイルにもそれを設定します。
バージョン 2.0.0 より前は、この関数では相対パスを正しく扱えません。 回避策として realpath() を使いましょう。
| バージョン | 説明 |
|---|---|
| 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);
?>rar:// wrapper