このモジュールにより、ZIP 圧縮されたアーカイブとその内部のファイルに対する
    透過的な読み書きが可能となります。
   
     最初のバージョンは PHP 4 に同梱されています。また、PECL
     でバージョン 1.0 として公開されています。
     http://pecl.php.net/package/zip を参照ください。
     これは、Zip アーカイブの読み込みのみに対応しています。
    
     このバージョンは、Guido Draheim による
     ZZIPlib
     ライブラリの関数を使用しています。
     ZZIPlib バージョン >= 0.10.6 が必要です。
    
     最新のバージョンは PHP 5.2.0 以降に同梱されており、
     PECL 版のバージョン 1.1.0 以降となっています。これは、
     外部のライブラリを必要としません。PHP 5.1 以降で使用した場合には
     Zip アーカイブの読み書きが可能で、PHP 4 で使用した場合には
     読み込みのみが可能となります。
    
  この PECL 拡張
モジュールは PHP にバンドルされていません。
  この PECL 拡張モジュールをインストールする方法は、
マニュアルの 
PECL 拡張モジュールのインストール という章にあります。
新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG
といった関連する情報については、次の場所にあります。
  http://pecl.php.net/package/zip.
 
    これらの関数を使用するには、zip サポートを有効にして PHP
    をコンパイルしなければなりません。そのためには、設定オプション
    --with-zip[=DIR] を使用します。
    [DIR] は、ZZIPlib
    ライブラリのインストールされている場所です。
   
    これらの関数を使用するには、zip サポートを有効にして PHP
    をコンパイルしなければなりません。そのためには、設定オプション
    --enable-zip を使用します。
    これは外部のライブラリを必要としません。
   
注意: 
     PECL 版を PHP 4 で使用することもできます。そのためには、
     同梱版の zip 拡張モジュールを無効にするか、あるいは
     zip サポートを無効にして PHP を再コンパイルする必要があります。
    
    Windows ユーザは、php.ini
    で php_zip.dll を有効にすると、
    これらの関数を使用できるようになります。
    PHP 4 の場合、この DLL は
PHP の Windows ダウンロードバイナリの extensions/ ディレクトリ
にあります。
    この PECL 拡張モジュール
の DLL を 
PHP ダウンロード ページ または 
http://snaps.php.net/ からダウンロードできます。
   
注意: 
     Zip のサポートは、PHP 4.1.0 以前は実験的なものでした。
     この節に書かれている内容は、PHP 4.1.0 以降の Zip
     拡張モジュールに関するものです。
    
    Windows ユーザは、php.ini
    で php_zip.dll を有効にすると、
    これらの関数を使用できるようになります。
    PHP 4 の場合、この DLL は
PHP の Windows ダウンロードバイナリの extensions/ ディレクトリ
にあります。
    この PECL 拡張モジュール
の DLL を 
PHP ダウンロード ページ または 
http://snaps.php.net/ からダウンロードできます。
   
    Zip モジュールでは二種類のリソース型が使用されます。
    まず最初が Zip アーカイブを表す Zip directory で、
    もうひとつはアーカイブのエントリを表す Zip Entry です。
   
以下の定数が定義されています。
この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、
実行時に動的にロードされている場合のみ使用可能です。
   ZipArchive はクラス定数を使用します。定数には
   フラグ (FL_)、エラー (ER_) あるいはモード (接頭辞なし)
   の三種類があります。
  
- ZIPARCHIVE::CREATE
     (integer)
 
     アーカイブが存在しない場合に、作成します。
    
- ZIPARCHIVE::OVERWRITE
     (integer)
 
     常に新しいアーカイブを開始します。このモードは、
     ファイルが既に存在する場合にはそれを上書きします。
    
- ZIPARCHIVE::EXCL
     (integer)
 
     アーカイブが既に存在する場合はエラーとします。
    
- ZIPARCHIVE::CHECKCONS
     (integer)
 
     アーカイブの一貫性チェックを別途行い、
     失敗した場合はエラーとします。
    
- ZIPARCHIVE::FL_NOCASE
     (integer)
 
     名前で検索する際に大文字小文字を区別しません。
    
- ZIPARCHIVE::FL_NODIR
     (integer)
 
     ディレクトリ要素を無視します。
    
- ZIPARCHIVE::FL_COMPRESSED
     (integer)
 
     圧縮されたデータを読み込みます。
    
- ZIPARCHIVE::FL_UNCHANGED
     (integer)
 
     元のデータを使用し、変更内容を無視します。
    
- ZIPARCHIVE::CM_DEFAULT
     (integer)
 
     圧縮あるいは保存のどちらか有効なほうを実行します。
    
- ZIPARCHIVE::CM_STORE
     (integer)
 
     保存します (圧縮しません)。
    
- ZIPARCHIVE::CM_SHRINK
     (integer)
 
     圧縮します。
    
- ZIPARCHIVE::CM_REDUCE_1
     (integer)
 
     reduced with factor 1
    
- ZIPARCHIVE::CM_REDUCE_2
     (integer)
 
     reduced with factor 2
    
- ZIPARCHIVE::CM_REDUCE_3
     (integer)
 
     reduced with factor 3
    
- ZIPARCHIVE::CM_REDUCE_4
     (integer)
 
     reduced with factor 4
    
- ZIPARCHIVE::CM_IMPLODE
     (integer)
 
     imploded
    
- ZIPARCHIVE::CM_DEFLATE
     (integer)
 
     deflated
    
- ZIPARCHIVE::CM_DEFLATE64
     (integer)
 
     deflate64
    
- ZIPARCHIVE::CM_PKWARE_IMPLODE
     (integer)
 
     PKWARE 方式。
    
- ZIPARCHIVE::CM_BZIP2
     (integer)
 
     BZIP2 アルゴリズム。
    
- ZIPARCHIVE::ER_OK
     (integer)
 
     エラーはありません。
    
- ZIPARCHIVE::ER_MULTIDISK
     (integer)
 
     複数ディスクの zip アーカイブはサポートされません。
    
- ZIPARCHIVE::ER_RENAME
     (integer)
 
     一時ファイルの名前変更に失敗しました。
    
- ZIPARCHIVE::ER_CLOSE
     (integer)
 
     zip アーカイブのクローズに失敗しました。
    
- ZIPARCHIVE::ER_SEEK
     (integer)
 
      シークエラー。
    
- ZIPARCHIVE::ER_READ
     (integer)
 
     読み込みエラー。
    
- ZIPARCHIVE::ER_WRITE
     (integer)
 
     書き込みエラー。
    
- ZIPARCHIVE::ER_CRC
     (integer)
 
     CRC エラー。
    
- ZIPARCHIVE::ER_ZIPCLOSED
     (integer)
 
     zip アーカイブはクローズされました。
    
- ZIPARCHIVE::ER_NOENT
     (integer)
 
     そのファイルはありません。
    
- ZIPARCHIVE::ER_EXISTS
     (integer)
 
     ファイルが既に存在します。
    
- ZIPARCHIVE::ER_OPEN
     (integer)
 
     ファイルをオープンできません。
    
- ZIPARCHIVE::ER_TMPOPEN
     (integer)
 
     一時ファイルの作成に失敗しました。
    
- ZIPARCHIVE::ER_ZLIB
     (integer)
 
     Zlib エラー。
    
- ZIPARCHIVE::ER_MEMORY
     (integer)
 
     メモリの確保に失敗しました。
    
- ZIPARCHIVE::ER_CHANGED
     (string)
 
     エントリが変更されました。
    
- ZIPARCHIVE::ER_COMPNOTSUPP
     (integer)
 
     圧縮方式がサポートされていません。
    
- ZIPARCHIVE::ER_EOF
     (integer)
 
     予期せぬ EOF です。
    
- ZIPARCHIVE::ER_INVAL
     (integer)
 
     無効な引数です。
    
- ZIPARCHIVE::ER_NOZIP
     (integer)
 
     zip アーカイブではありません。
    
- ZIPARCHIVE::ER_INTERNAL
     (integer)
 
     内部エラー。
    
- ZIPARCHIVE::ER_INCONS
     (integer)
 
     矛盾した Zip アーカイブです。
    
- ZIPARCHIVE::ER_REMOVE
     (integer)
 
     ファイルを削除できません。
    
- ZIPARCHIVE::ER_DELETED
     (integer)
 
     エントリが削除されました。
    
例 1. Zip アーカイブの作成 
<?php
  $zip = new ZipArchive(); $filename = "./test112.zip";
  if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {     exit("cannot open <$filename>\n"); }
  $zip->addFromString("testfilephp.txt" . time(), "#1 This is a test string added as testfilephp.txt.\n"); $zip->addFromString("testfilephp2.txt" . time(), "#2 This is a test string added as testfilephp2.txt.\n"); $zip->addFile($thisdir . "/too.php","/testfromfile.php"); echo "numfiles: " . $zip->numFiles . "\n"; echo "status:" . $zip->status . "\n"; $zip->close(); ?>
 |  
  | 
例 2. アーカイブの詳細の出力および一覧表示 
<?php $za = new ZipArchive();
  $za->open('test_with_comment.zip'); print_r($za); var_dump($za); echo "numFiles: " . $za->numFiles . "\n"; echo "status: " . $za->status  . "\n"; echo "statusSys: " . $za->statusSys . "\n"; echo "filename: " . $za->filename . "\n"; echo "comment: " . $za->comment . "\n";
  for ($i=0; $i<$za->numFiles;$i++) {     echo "index: $i\n";     print_r($za->statIndex($i)); } echo "numFile:" . $za->numFiles . "\n"; ?>
 |  
  | 
例 3. Zip ストリームラッパーによる OpenOffice メタ情報の読み込み 
<?php $reader = new XMLReader();
  $reader->open('zip://' . dirname(__FILE__) . '/test.odt#meta.xml'); $odt_meta = array(); while ($reader->read()) {     if ($reader->nodeType == XMLREADER::ELEMENT) {         $elm = $reader->name;     } else {         if ($reader->nodeType == XMLREADER::END_ELEMENT && $reader->name == 'office:meta') {             break;         }         if (!trim($reader->value)) {             continue;         }         $odt_meta[$elm] = $reader->value;     } } print_r($odt_meta); ?>
 |  
  | 
    この例は旧 API (PHP 4 用) を使用します。まず ZIP
    ファイルアーカイブをオープンし、アーカイブ内の各ファイルを読み込み、
    その内容を出力します。この例で使用するアーカイブ
    test2.zip は、ZZIPlib
    のソース配布物に含まれているテスト用アーカイブのひとつです。
   
例 4. Zip の使用例 
<?php
  $zip = zip_open("/tmp/test2.zip");
  if ($zip) {     while ($zip_entry = zip_read($zip)) {         echo "Name:               " . zip_entry_name($zip_entry) . "\n";         echo "Actual Filesize:    " . zip_entry_filesize($zip_entry) . "\n";         echo "Compressed Size:    " . zip_entry_compressedsize($zip_entry) . "\n";         echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";
          if (zip_entry_open($zip, $zip_entry, "r")) {             echo "File Contents:\n";             $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));             echo "$buf\n";
              zip_entry_close($zip_entry);         }         echo "\n";
      }
      zip_close($zip);
  } ?>
 |  
  |