この拡張機能を使用すると、ZIP アーカイブとその中のファイルを透過的に読み書きできるようになります。
PHP5.2 以降、これらの関数を使用するには、PHP をコンパイルするときに --enable-zip 構成オプションを使用して zip サポートを提供する必要があります。
例 #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 ソース配布内のテスト ファイルの 1 つです。
例 #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); } ?>
ZipArchive クラス
ZipArchive::addEmptyDir — 新しいディレクトリを追加します
ZipArchive::addFile — 指定されたパスから ZIP アーカイブにファイルを追加します
ZipArchive::addFromString — 追加その内容を使用してファイルを ZIP アーカイブに追加します
ZipArchive::addGlob — glob パターンによってディレクトリからファイルを追加します
ZipArchive::addPattern — PCRE パターンによってディレクトリからファイルを追加します
ZipArchive::close — アクティブなアーカイブを閉じる(開かれているか、新しく作成されています)
ZipArchive::deleteIndex — インデックスを使用してアーカイブ内のエントリを削除します
ZipArchive::deleteName — 名前を使用してアーカイブ内のエントリを削除します
ZipArchive::extractTo — アーカイブの内容を抽出します
ZipArchive::getArchiveComment — Zip アーカイブのコメントを返します
ZipArchive::getCommentIndex — エントリのインデックスを使用してエントリのコメントを返します
ZipArchive::getCommentName — エントリ名を使用してエントリのコメントを返します
ZipArchive:: getFromIndex — インデックスを使用してエントリの内容を返します
ZipArchive::getFromName — 名前を使用してエントリの内容を返します
ZipArchive::getNameIndex — インデックスを使用してエントリの名前を返します
ZipArchive::getStatusString — ステータスエラーを返しますメッセージ、システム、および/または zip メッセージ
ZipArchive::getStream — 名前で定義されたエントリへのファイル ハンドラーを取得します (読み取り専用)。
ZipArchive::locateName — アーカイブ内のエントリのインデックスを返します
ZipArchive ::open — ZIP ファイルアーカイブを開きます
ZipArchive::renameIndex — インデックスによって定義されたエントリの名前を変更します
ZipArchive::renameName — 名前によって定義されたエントリの名前を変更します
ZipArchive::setArchiveComment — ZIP のコメントを設定しますarchive
ZipArchive::setCommentIndex — インデックスによって定義されたエントリのコメントを設定します
ZipArchive::setCommentName — 名前によって定義されたエントリのコメントを設定します
ZipArchive::statIndex — によって定義されたエントリの詳細を取得しますそのindex.
ZipArchive::statName — 名前によって定義されたエントリの詳細を取得します。
ZipArchive::unchangeAll — アーカイブ内で行われたすべての変更を元に戻します
ZipArchive::unchangeArchive — アーカイブ内で行われたすべてのグローバル変更を元に戻します.
ZipArchive::unchangeIndex — 指定されたインデックスのエントリに対して行われたすべての変更を元に戻します
ZipArchive::unchangeName — 指定された名前のエントリに対して行われたすべての変更を元に戻します
関連関数
zip_close — ZIP ファイルを閉じるarchive
zip_entry_close — ディレクトリエントリを閉じる
zip_compressedsize — ディレクトリエントリの圧縮サイズを取得
zip_entry_compressionmethod — ディレクトリエントリの圧縮方法を取得
zip_entry_filesize — ディレクトリエントリの実際のファイルサイズを取得
zip_entry_name —ディレクトリエントリの名前を取得します
zip_entry_open — 読み取りのためにディレクトリエントリを開きます
zip_entry_read — 開いているディレクトリエントリから読み取ります
zip_open — ZIP ファイルアーカイブを開きます
zip_read — ZIP ファイルアーカイブ内の次のエントリを読み取ります