Authentication




Cancel OK
B!コメントする  2012-11-01 11:04:00 by old

PHPで解凍

圧縮したら解凍したくなるもの。
PHPで解凍してみた。

解凍にはhttp://www.phpclasses.org/package/2495-PHP-Pack-and-unpack-files-packed-in-ZIP-archives.htmlというのを使用しました。
(PHP5.2以降もしくはPECLとか入ってる環境なら標準でZipArchiveというのがあるのでそちらで解凍も出来ます。)

// 解凍モジュール読み込み
requireonce( './dUnzip2.inc.php' );

// 解凍するファイル
$path = './test.zip';
$instance = new dUnzip2( $path );

// 全て解凍
$instance->unzipAll();


これだけで解凍が出来ます。
ちなみに解凍せずにZIP内のファイルリストも取得できます。

// 解凍モジュール読み込み
require
once( './dUnzip2.inc.php' );

// 解凍するファイル
$path = './test.zip';
$instance = new dUnzip2( $path );

//Zipファイル内のファイルリストを取得
$files = $instance->getList();

foreach( $files as $key => $val )
{
echo $key . " - " . $val;
}

// 全て解凍
$instance->unzipAll();


そんでもって指定したファイルだけを解凍することも出来ますし、解凍先も指定が出来ます。

// 解凍モジュール読み込み
requireonce( './dUnzip2.inc.php' );

$path = './test.zip';
$instance = new dUnzip2( $path );

//Zipファイル内のファイルリストを取得
$files = $instance->getList();

foreach( $files as $key => $val )
{
// 拡張子がtxtのものだけ
if( preg
match("/.txt$/u", $key) )
{
// 指定ファイルのみ解凍
$result = $instance->unzip( $key, './hoge/sample.txt' );
}
}


こうすることで指定したファイルだけの解凍を行いつつ、解凍先も指定が出来ます。

PHPで解凍したいけどZipArchiveが使えないとか、PEARやPECLを追加出来る権限がないとか、
追加は出来るけどそんなに機能は要らないので解凍機能だけ欲しいとか、バージョンに依存したくないとかそういう場合にはdUnzip2を試してみてください。
ライセンスはBSDとなっておりますので扱いやすいと思います。


PHP  

  • コメント
  • コメントはまだありません