ホームページ  >  記事  >  バックエンド開発  >  PHPのzip解凍クラスPclZipの使い方まとめ

PHPのzip解凍クラスPclZipの使い方まとめ

WBOY
WBOYオリジナル
2016-06-20 13:04:181019ブラウズ

PHP zip を解凍するには、PHP に付属する解凍拡張機能の実装に加えて、さまざまな方法があります。ここでは、強力な PHP ZIP 圧縮クラスを紹介します。

PHP zip 解凍クラス PclZip の紹介

PclZip ライブラリは、Zip 形式 (WinZip、PKZIP) の圧縮ファイルを圧縮および解凍する処理を実行します。圧縮ファイルの生成、圧縮ファイルの内容の一覧表示、ファイルの解凍などが含まれます。サーバー側で圧縮・解凍ができるので非常に便利です。

PclZip は PclZip カテゴリを定義し、そのカテゴリ オブジェクトは ZIP ファイルと見なすことができ、処理のためのメソッドも提供します。

PHP zip 解凍クラス PclZip の使用方法

1. 基本

すべての関数は、pclzip.lib.php ファイルによって提供されます。ホームページ (www.phpconcept.net/pclzip/index.en.php) をダウンロードします。すべての PKZIP ファイルは、実際には PclZip クラスのオブジェクトです。 PclZip ファイル (つまり、PclZip クラス オブジェクト) が生成されると、最初に圧縮ファイルが生成され、ファイル名が指定されていますが、この圧縮ファイルの内容はまだ存在しません:

< ?PHP <br />         require_once('pclzip.lib.php'); <br />         $archive = new PclZip("archive.zip"); <br />?>

このオブジェクト このファイルを処理するために、いくつかのパブリック メソッドが提供されています。

2. パラメータ

各メソッドには、必須パラメータとオプションのパラメータを含む、使用できる独自のパラメータがあります。上記の例では、
< ?PHP <br />         require_once('pclzip.lib.php'); <br />         $archive = new PclZip('archive.zip'); <br />  <br />         $v_list = $archive->add('dev/file.txt', <br />                                    PCLZIP_OPT_REMOVE_PATH, 'dev'); <br />?>

'dev/file' です。必須パラメータですが、「PCLZIP_OPT_REMOVE_PATH」は必須ではありません。もちろん、一部のメソッドには必須ではないパラメータのみを含めることもできます。
< ?PHP <br />         $list = $archive->extract(PCLZIP_OPT_PATH, "folder", <br />                          PCLZIP_OPT_REMOVE_PATH, "data", <br />                                PCLZIP_CB_PRE_EXTRACT, "callback_pre_extract",); <br />?>

上記の例では、圧縮ファイル内のファイルが保存されている元のパスは /data ですが、次のように指定することもできます。 /folder に解凍するように指定します。さらに、解凍前にコールバック関数 ('callback_pre_extract()') が呼び出されます。この関数を使用すると、ユーザーは解凍プロセス中にファイルの保存パスとファイル名を変更したり、解凍しない特定のファイルを選択したりできます。

3. 戻り値

各メソッドによって返される値は異なる場合がありますので、メソッドごとに説明します。ただし、ほとんどのメソッドは 0、エラー、または配列を返します。

4. エラー処理

バージョン 1.3 以降、エラー処理は PclZip カテゴリに統合されており、メソッドがエラー コードを返すと、エラー処理を容易にするための追加情報を取得できます。 errorName(): エラー名を返します
* errorCode(): エラー コード
を返します * errorInfo(): エラーの説明を返します 次に、PclZip の使用方法を説明するために、いくつかの例を示します。 PclZip の例 1. ZIP 圧縮ファイルの生成
PclZip($zipname): は PclZip コンストラクター、$zipname は PKZIP 圧縮ファイルのファイル名です。
主に PclZip オブジェクト、つまり PKZIP 圧縮ファイルを生成しますが、この時点では圧縮ファイルのみが生成され、いくつかのチェックが行われます (zlib 拡張子がオンになっているかどうかなど)。それ以外に、他のアクションを実行することはありません。
create($filelist, [オプションの引数リスト]): パラメータ $filelist で指定されたファイルまたはディレクトリ (その中のすべてのファイルとサブディレクトリを含む) を、上記で生成された圧縮ファイルに追加します。
必須ではないパラメータにより、圧縮ファイル内のファイル ストレージ パスが変更される可能性があります。

このメソッドで使用できるパラメータは、ブログ (www.phpconcept.net/pclzip/man/en/index.php) で見つけることができます。

次の例は、PKZIP 圧縮ファイル (ファイル名 archive.zip) を生成し、生成されたばかりの file.txt、data/text.txt、およびディレクトリ フォルダー (ファイルとサブディレクトリを含む) をアーカイブに追加する方法を示しています。 .zip:

< ?PHP<br />        include_once('pclzip.lib.php');<br />        $archive = new PclZip('archive.zip');<br />        $v_list = $archive->create('file.txt,data/text.txt,folder');<br />        if ($v_list == 0) {<br />            die("Error : ".$archive->errorInfo(true));<br />        }<br />?>
次の例は、基本的に上記の例と同じ方法で archive.zip が生成されますが、その中に file.txt と text.txt が圧縮されている場合、パスが変更されることを示しています。 data/ から install/ に変更します。したがって、archive.zip 内のこれら 2 つのファイルのパスは、install/file.txt および install/text.txt

< ?PHP<br />        include_once('pclzip.lib.php');<br />        $archive = new PclZip('archive.zip');<br />        $v_list = $archive->create('data/file.txt,data/text.txt',<br />                                         PCLZIP_OPT_REMOVE_PATH, 'data',<br />                                         PCLZIP_OPT_ADD_PATH, 'install');<br />        if ($v_list == 0) {<br />            die("Error : ".$archive->errorInfo(true));<br />        }<br /><p>?></p>

PHP zip になります。解凍 PclZip クラス インスタンス

1. 圧縮ファイルの内容を一覧表示します

listContent(): ファイル属性とディレクトリを含む、圧縮ファイルの内容を一覧表示します。 🎜>

<span style="font-size: 14px;">< ?PHP</span><br />        include_once('pclzip.lib.php');<br />        $zip = new PclZip("test.zip");<br /> <br />        if (($list = $zip->listContent()) == 0) {<br />        die("Error : ".$zip->errorInfo(true));<br />        }<br /> <br />        for ($i=0; $i<sizeof ($list); $i++) {<br />            for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {<br />                echo "File $i / [$key] = ".$list[$i][$key]."<br />";<br />            }<br />            echo "<br />";<br />        }<br /><p>?><span style="font-size: 14px;">
上記の例は結果を返します:

File 0 / [filename] = data/file1.txt

File 0 / [保存ファイル名] = data/file1.txt
ファイル 0 / [サイズ] = 53
ファイル 0 / [圧縮サイズ] = 36
ファイル 0 / [mtime] = 1010440428
ファイル 0 / [コメント] =
ファイル 0 / [フォルダー] = 0
ファイル 0 / [インデックス] = 0
ファイル 0 / [ステータス] = okFile 1 / [ファイル名] = data/file2.txt
ファイル 1 / [保存ファイル名] = data/file2.txt
ファイル 1 / [サイズ] = 54
ファイル 1 / [圧縮サイズ] = 53
ファイル 1 / [mtime] = 1011197724
ファイル1 / [コメント] =
ファイル 1 / [フォルダー] = 0
ファイル 1 / [インデックス] = 1

ファイル 1 / [ステータス] = ok

2. Unzip Archive

extract([オプション リスト]): PKZIP 内のアーカイブまたはディレクトリを抽出します。

[オプションリスト] 利用可能なパラメータ。

これらのパラメータを使用すると、ユーザーは解凍時に、解凍されたファイルのパスを変更する指定、特定のファイルのみを解凍するか特定のファイルを解凍しない指定、ファイルを文字列出力に変換するなど、より多くのオプションを使用できるようになります。 Readme ファイルに使用されます)。次の例は、archive.zip ファイルを現在のディレクトリに解凍する簡単な例です。

次の例は、高度な解凍の例です。 ファイルの使用法、archive.zip 内のすべてのファイルこれらは data/ で解凍され、install/release で特に指定されたすべてのファイルも、data/install/ release ではなく data/ に直接スローされます。
<span style="font-size: 14px;">< ?PHP</span><br />        require_once('pclzip.lib.php');<br />        $archive = new PclZip('archive.zip');<br /> <br /> <br />        if ($archive->extract() == 0) {<br />            die("Error : ".$archive->errorInfo(true));<br />        }<br />?>


< ?PHP<br />        include('pclzip.lib.php');<br />        $archive = new PclZip('archive.zip');<br />        if ($archive->extract(PCLZIP_OPT_PATH, 'data',<br />                  PCLZIP_OPT_REMOVE_PATH, 'install/release') == 0) {<br />                                die("Error : ".$archive->errorInfo(true));<br />        }<br /><p>?>
プロジェクト アドレス: http://www .phpconcept.net/pclzip/


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。