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の作成って、ライセンスの都合で有償なんですね。。。道理で今までほとんど使わなかったわけだ。