There's a small problem in Example #2 by Erik Jenssen listed above.
This line:
$entry = rar_entry_get($rar_file, $file);
Should actually read:
$entry = rar_entry_get($rar_file, $file->name);
As it's an object, and the second parameter of rar_entry_get needs to be a string (of the file path).
Rar::extract
(PECL rar >= 0.1)
Rar::extract — アーカイブのエントリを展開する
説明
Rar
Rar::extract() は、エントリのデータを dir に展開します。指定した dir に、エントリの名前と同名の新しいファイルを作成します。
パラメータ
- dir
-
ファイルを展開するディレクトリへのパス。
- filepath
-
dir の代わりに filepath が指定されている場合は、 Rar::extract() は指定したファイルに エントリのデータを展開します。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例
例1 Rar::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::extract
chris at chrisphillips dot co dot uk
15-Jun-2008 08:05
15-Jun-2008 08:05
Christian Boisjoli
27-Jul-2007 07:59
27-Jul-2007 07:59
As remarked by Lubomir Stefanov, example 2026 has an error. Another way to correct this error would be to replace the foreach loop as follows:
<?php
foreach($list as $entry) {
$entry->extract("."); // extract to the current dir
}
?>
Lubomir Stefanov
26-Feb-2007 04:45
26-Feb-2007 04:45
One edit for function by Erik Jenssen
Line $entry = rar_entry_get($rar_file, $file);
must be $entry = rar_entry_get($rar_file, $file->name);
because $file is a object
