rar 1.0.0を試してみた
stable版がリリースされたので、試してみました。
PHPマニュアルに掲載されたサンプルにちょっと付け加えて、rar拡張モジュールで提供されているすべての関数・メソッドを一気に試すサンプルです。なお、test.rarには、以下の4ファイルが含まれています。
PHP extension for reading Rar archives using bundled unRAR library.
<?php $fp = rar_open('test.rar') || die("アーカイブをオープンできません。"); $entries = rar_list($fp); foreach ($entries as $entry) { echo 'ファイル名: ' . mb_convert_encoding($entry->getName(), mb_internal_encoding(), 'utf-8,sjis-win,eucjp-win') . "\n"; echo '圧縮時のファイルサイズ : ' . $entry->getPackedSize() . "\n"; echo '展開後のファイルサイズ : ' . $entry->getUnpackedSize() . "\n"; echo 'ファイルのCRC : ' . $entry->getCrc() . "\n"; echo 'ファイルのタイムスタンプ: ' . $entry->getFileTime() . "\n"; echo 'ファイルの属性 : ' . $entry->getAttr() . "\n"; echo 'ファイルの圧縮方法 : ' . $entry->getMethod() . "\n"; echo 'ファイルのホストOS : ' . $entry->getHostOs() . "\n"; echo "使用したRarのバージョン : " . $entry->getVersion() . "\n"; $entry->extract('./extract/'); } var_dump(rar_entry_get($fp, 'pr.htm')); var_dump(rar_entry_get($fp, 'non_exist.html')); rar_close($fp);
実行結果は次のような感じです。
$ php -v
PHP 5.2.5 (cli) (built: Feb 18 2008 19:23:28)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with Xdebug v2.0.2-dev, Copyright (c) 2002-2007, by Derick Rethans
with eAccelerator v0.9.5.2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
$ ls
rar.php test.rar
$ php rar.php
ファイル名: php_5_1_3-php_egg_logo.gif
圧縮時のファイルサイズ : 3804
展開後のファイルサイズ : 3810
ファイルのCRC : f2fd6461
ファイルのタイムスタンプ: 2008-02-27 00:28:14
ファイルの属性 : 32
ファイルの圧縮方法 : 51
ファイルのホストOS : 2
使用したRarのバージョン : 29
ファイル名: pukiwiki.css
圧縮時のファイルサイズ : 1966
展開後のファイルサイズ : 8742
ファイルのCRC : 6c3ee619
ファイルのタイムスタンプ: 2008-02-08 20:17:12
ファイルの属性 : 32
ファイルの圧縮方法 : 51
ファイルのホストOS : 2
使用したRarのバージョン : 29
ファイル名: pr.htm
圧縮時のファイルサイズ : 3892
展開後のファイルサイズ : 22136
ファイルのCRC : 16c7b78d
ファイルのタイムスタンプ: 2008-01-28 00:56:06
ファイルの属性 : 32
ファイルの圧縮方法 : 51
ファイルのホストOS : 2
使用したRarのバージョン : 29
ファイル名: tracのセットアップ.txt
圧縮時のファイルサイズ : 5730
展開後のファイルサイズ : 19922
ファイルのCRC : 797e0b60
ファイルのタイムスタンプ: 2008-01-28 15:07:20
ファイルの属性 : 32
ファイルの圧縮方法 : 51
ファイルのホストOS : 2
使用したRarのバージョン : 29
object(RarEntry)#5 (10) {
["rarfile"]=>
resource(4) of type (Rar file)
["name"]=>
string(6) "pr.htm"
["unpacked_size"]=>
int(22136)
["packed_size"]=>
int(3892)
["host_os"]=>
int(2)
["file_time"]=>
string(19) "2008-01-28 00:56:06"
["crc"]=>
string(8) "16c7b78d"
["attr"]=>
int(32)
["version"]=>
int(29)
["method"]=>
int(51)
}
NULL
$ ls extract/
php_5_1_3-php_egg_logo.gif pr.htm pukiwiki.css tracのセットアップ.txt
$ まあ、今回試してみて分かった事が2つ。
1つ目は、最後のrar_entry_get関数でNULLが返ってきていますが、PHPマニュアルにはfalseが返されるとなっています。どっちが正しいんだ?
2つ目は、rarの作成って、ライセンスの都合で有償なんですね。。。道理で今までほとんど使わなかったわけだ。