php ZipArchive はファイルの圧縮と解凍を行うことができる機能ですが、このクラスを使用する前に php.ini に extension=php_zip.dll を設定する必要があります。 ? このクラス ライブラリを使用できるように、それを削除してから Apache を再起動します。
ziparchive のオプションのパラメーター
1.ZipArchive::addEmptyDir
新しいファイルディレクトリを追加します
2.ZipArchive::addFile
指定された zip アーカイブにファイルを追加します。
3.ZipArchive::addFromString
追加されたファイルには、コンテンツも同時に追加されます
4.ZipArchive::close
zipアーカイブを閉じる
5.ZipArchive::extractTo
圧縮パッケージを解凍します
6.ZipArchive::open
zip アーカイブを開く
7.ZipArchive::getStatusString
エラー情報、圧縮情報などを含む、圧縮中のステータス内容を返します。
8.ZipArchive::deleteIndex
圧縮パッケージ内の特定のファイルを削除します。たとえば、 deleteIndex(0) は最初のファイルを削除します
9.ZipArchive::deleteName
圧縮パッケージ内の特定のファイル名を削除し、そのファイルも削除します。
...
*/
例
1.zipファイルを解凍します
コードは次のとおりです | コードをコピー |
$zip = new ZipArchive;//新しい ZipArchive オブジェクトを作成します /* ZipArchive オブジェクト経由で zip ファイルを処理する $zip->open メソッドのパラメータは、処理する zip ファイルの名前を示します。 zip ファイル オブジェクトの操作が成功すると、$zip->open メソッドは TRUE を返します */ if ($zip->open('test.zip') === TRUE) { $zip->extractTo('images');//現在のパス下のimagesフォルダーのサブフォルダーphpに抽出するものとします $zip->close();//処理されたzipファイルを閉じます } |
2. ファイルを zip ファイルに圧縮します
コードは次のとおりです | コードをコピー |
$zip = 新しい ZipArchive; /* $zip->open メソッドの最初のパラメータは、処理される zip ファイルの名前を示します。 2 番目のパラメータは、処理モードを示します。ZipArchive::OVERWRITE は、zip ファイルが存在する場合、元の zip ファイルが上書きされることを示します。 パラメータで ZIPARCHIVE::CREATE が使用されている場合、システムはコンテンツを元の zip ファイルに追加します。 zip ファイルにコンテンツを複数回追加しない場合は、ZipArchive::OVERWRITE を使用することをお勧めします。 これら 2 つのパラメータを使用すると、zip ファイルが存在しない場合、システムが自動的に作成します。 zip ファイル オブジェクトの操作が成功すると、$zip->open メソッドは TRUE を返します */ if ($zip->open('test.zip', ZipArchive::OVERWRITE) === TRUE) { $zip->addFile('image.txt');//現在のパスに追加されたファイル名が image.txt であると仮定します $zip->close(); } |
3. zip ファイルにファイルを追加します
コードは次のとおりです | コードをコピー |
$zip = 新しい ZipArchive; $res = $zip->open('test.zip', ZipArchive::CREATE); if ($res === TRUE) { $zip->addFromString('test.txt', 'ファイルの内容はここにあります'); $zip->close(); 「ok」をエコーします; } その他 { エコー「失敗しました」; } |
4. フォルダーを zip ファイルに圧縮します
コードは次のとおりです | コードをコピー |
関数 addFileToZip($path, $zip) {
if ($zip->open('images.zip', ZipArchive::OVERWRITE) === TRUE) { |
ファイル名だけがわかっていて、ファイルの具体的なパスがわからない場合は、インデックスで指定したファイル名を検索し、そのインデックスを頼りにコンテンツを取得できます。
コードをコピー | |
$zip = 新しい ZipArchive; |
上記で取得したインデックスは、locateName メソッドに依存しています。圧縮パッケージ内の複数のパスに同じ名前のファイルがある場合、すべてのファイルのインデックスを取得したい場合は、最初のファイルのインデックスのみを返すことができるようです。同じ名前の場合、愚かな方法を使用してループ内で検索することしかできません。
コードをコピー | |
$zip = 新しい ZipArchive; if ($zip->open('test.zip') === TRUE) { for($i = 0; $i numFiles; $i++) { If(substr_count($zip->getNameIndex($i), 'example.php')>0){ } } } ?> |
http://www.bkjia.com/PHPjc/632774.html