PclZip: 強力な PHP 圧縮および解凍 zip クラス
PclZip の概要
PclZip
ライブラリは、Zip 形式 (WinZip、PKZIP) で圧縮ファイルを圧縮および解凍でき、圧縮ファイルの生成、圧縮ファイルの内容の一覧表示、圧縮ファイルの解凍など、そのようなファイルを処理できます。
ファイルなどを縮小します。サーバー側で圧縮・解凍ができるので非常に便利です。
PclZip は PclZip クラスを定義し、そのクラス オブジェクトは ZIP ファイルと見なすことができ、処理のためのメソッドも提供します。
?
PclZip の使用方法
?
1.基本
すべての関数は、pclzip.lib.php、PclZip ファイルによって提供されます。
ライブラリはホームページ (www.phpconcept.net/pclzip/index.en.php) からダウンロードできます。すべての PKZIP ファイルは実際には 1 つです
PclZipのクラスオブジェクト。 PclZip アーカイブを生成するとき (つまり、
PclZip クラス オブジェクト)、圧縮ファイルが最初に生成され、ファイル名が指定されていますが、この圧縮ファイルのコンテンツはまだ存在しません:
<?PHP require_once('pclzip.lib.php'); $archive = new PclZip("archive.zip"); ?>
このオブジェクトは、このファイルを処理するためのいくつかのパブリック メソッドを提供します。
?
2. パラメータ
各メソッドには、必須パラメータとオプションのパラメータを含む、独自の使用可能なパラメータがあります:
<?PHP require_once('pclzip.lib.php'); $archive = new PclZip('archive.zip'); $v_list = $archive->add('dev/file.txt', PCLZIP_OPT_REMOVE_PATH, 'dev'); ?>
上記の例では、「dev/file.txt」は必須パラメータですが、「PCLZIP_OPT_REMOVE_PATH」は必須ではありません。もちろん、一部のメソッドには次のことのみを含めることもできます。 オプションのパラメータが含まれます:
<?PHP $list = $archive->extract(PCLZIP_OPT_PATH, "folder", PCLZIP_OPT_REMOVE_PATH, "data", PCLZIP_CB_PRE_EXTRACT, "callback_pre_extract",); ?>
上記の例では、圧縮ファイルの元のファイル保存パスは/dataですが、/folderに展開するように指定することもできます。さらに、解凍前にコールバックが呼び出されます。
関数 ('callback_pre_extract()')、この関数を使用すると、ユーザーは解凍プロセス中にファイル ストレージ パスとファイル名を変更するか、選択することができます。
解凍しないファイルをいくつか選択してください。
使用可能なオプションのパラメータはすべて、URL (www.phpconcept.net/pclzip/man/en/index.php) にあります。
?
3. 戻り値
各メソッドによって返される値は異なる場合があるため、各メソッドで説明します。ただし、ほとんどのメソッドは 0、エラー、または配列を返します。
?
4. エラー処理
バージョン 1.3 以降、エラー処理は PclZip カテゴリに統合されています。メソッドがエラー コードを返すと、エラー処理を容易にするための追加情報を取得できます。
* errorName(): エラー名を返します
* errorCode(): エラーコード
を返します
* errorInfo(): エラーの説明を返します
?
PclZip 例 1. ZIP 圧縮ファイルの生成
PclZip($zipname): PclZip コンストラクター、$zipname は PKZIP 圧縮ファイルのファイル名です。
主な目的は PclZip オブジェクト、つまり PKZIP 圧縮ファイルを生成することですが、この時点では圧縮ファイルのみが生成され、いくつかのチェックが行われます (たとえば、zlib がオンになっているかどうかなど)。
拡張子...など)、それ以外のアクションは実行されません。
必須ではないパラメータにより、圧縮ファイル内のファイル ストレージ パスが変更される可能性があります。
このメソッドで使用できるパラメータは、ブログ (www.phpconcept.net/pclzip/man/en/index.php) で見つけることができます。
使用法 1:
?<?php include_once ('pclzip.lib.php'); $archive = new PclZip ( 'archive.zip' ); $v_list = $archive->create ( 'file.txt,data/text.txt,folder' ); if ($v_list == 0) { die ( "Error : " . $archive->errorInfo ( true ) ); } ?>
次の例は、基本的に上記の例と同じ方法で archive.zip が生成されることを示していますが、その中の file.txt と text.txt を圧縮する際に、パスが data/ から install/; したがって、archive.zip 内のこれら 2 つのファイルのパスは install/file.txt と install/text.txt
になります。
?<?php include_once ('pclzip.lib.php'); $archive = new PclZip ( 'archive.zip' ); $v_list = $archive->create ( 'data/file.txt,data/text.txt', PCLZIP_OPT_REMOVE_PATH, 'data', PCLZIP_OPT_ADD_PATH, 'install' ); if ($v_list == 0) { die ( "Error : " . $archive->errorInfo ( true ) ); } ?>
PclZip 例 2. 圧縮ファイルの内容を一覧表示する
listContent(): ファイル属性やディレクトリを含む圧縮ファイルの内容をリストします:
<?PHP include_once ('pclzip.lib.php'); $zip = new PclZip ( "test.zip" ); if (($list = $zip->listContent ()) == 0) { die ( "Error : " . $zip->errorInfo ( true ) ); } for($i = 0; $i < sizeof ( $list ); $i ++) { for(reset ( $list [$i] ); $key = key ( $list [$i] ); next ( $list [$i] )) { echo "File $i / [$key] = " . $list [$i] [$key] . "<br>"; } echo "<br />"; } ?>
上記の例は次の結果を返します:
ファイル 0 / [ファイル名] = data/file1.txt
ファイル 0/[保存ファイル名] = data/file1.txt
ファイル 0 / [サイズ] = 53
ファイル 0 / [圧縮サイズ] = 36
ファイル 0 / [mtime] = 1010440428
ファイル 0/[コメント] =
ファイル 0 / [フォルダー] = 0
ファイル 0 / [インデックス] = 0
ファイル 0 / [ステータス] = ok
ファイル 1/[保存ファイル名] = data/file2.txt
ファイル 1 / [サイズ] = 54
ファイル 1 / [圧縮サイズ] = 53
ファイル 1 / [mtime] = 1011197724
ファイル 1/[コメント] =
ファイル 1 / [フォルダー] = 0
ファイル 1 / [インデックス] = 1
ファイル 1 / [ステータス] = ok
PclZip实例3、解压缩档案
extract([options list]) :解压缩PKZIP中的档案或目录。
[options
list]可用的参数可参考网址(www.phpconcept.net/pclzip/man/en/index.php)。这些参数能让使用者在解压
缩的时候有更多的选项,譬如指定变更解压缩档案的路径、指定只解压缩某些档案或不解压缩某些档案或者是将档案解压缩成字串输出(可用于readme档)。
下例是一个简单的解压缩档案示例,将压缩档archive.zip内的档案解压缩至目前的目录:
<?PHP require_once('pclzip.lib.php'); $archive = new PclZip('archive.zip'); if ($archive->extract() == 0) { die("Error : ".$archive->errorInfo(true)); } ?>
下例是进阶的解压缩档案使用,archive.zip中所有档案都解压缩于data/中,而特别指明在install/release中的所有档案也直接 丢于data/中,而非data/install/ release:
<?PHP include('pclzip.lib.php'); $archive = new PclZip('archive.zip'); if ($archive->extract(PCLZIP_OPT_PATH, 'data', PCLZIP_OPT_REMOVE_PATH, 'install/release') == 0) { die("Error : ".$archive->errorInfo(true)); } ?>
看见create方法的参数没有,再看看方法原型你就知道如何做了。至少我还没有这样用过。
相关文档:
PclZip官方地址
:http://www.phpconcept.net/pclzip/index.php
PclZip手册地
址
:http://www.phpconcept.net/pclzip/man/en/index.php
PEAR类创建
ZIP档案文件
:http://www.ccvita.com/10.html
PclZip简介与
使用
:http://www.ccvita.com/59.html
PclZip:强大
的PHP压缩与解压缩zip类
:http://www.ccvita.com/330.html