ホームページ > バックエンド開発 > PHPチュートリアル > PHP は ZipArchive クラスを使用してファイルの圧縮と解凍を実装します

PHP は ZipArchive クラスを使用してファイルの圧縮と解凍を実装します

王林
リリース: 2023-04-08 09:04:02
転載
3357 人が閲覧しました

PHP は ZipArchive クラスを使用してファイルの圧縮と解凍を実装します

ZipArchive クラスは、ファイルの圧縮と解凍操作に特化したクラスで、ファイルを圧縮することでディスク容量を節約し、圧縮ファイルのサイズを小さくしてネットワーク送信を容易にします。

ZipArchive クラスでは、主に次のメソッドを使用します。

1: open (圧縮パッケージ ファイルを開く)

$zip = new \ZipArchive;
$zip->open('test_new.zip', \ZipArchive::CREATE)
ログイン後にコピー

Parameter description :

最初のパラメータ: 開く圧縮パッケージ ファイル

2 番目のパラメータ:

ZIPARCHIVE::OVERWRITEAlways Create新しいファイル。指定した zip ファイルが存在する場合は上書きされます。

ZIPARCHIVE::CREATE指定した zip ファイルが存在しない場合は、新しい zip ファイルを作成します。

ZIPARCHIVE::EXCL指定された zip ファイルが存在する場合、エラーが報告されます。

ZIPARCHIVE::CHECKCONS指定された zip に対して追加の整合性テストを実行します。

(無料の学習ビデオ チュートリアルの共有: php ビデオ チュートリアル)

2: addFile (指定されたファイルを圧縮パッケージに追加します)

//将test.txt文件添加到压缩包中
$zip->addFile('test.txt'); //第二个参数可对文件进行重命名
ログイン後にコピー

3: addEmptyDir (指定された空のディレクトリを圧縮パッケージに追加します)

//将一个空的目录添加到zip中
 $zip->addEmptyDir ('newdir');
ログイン後にコピー

4: addFromString (指定された内容を含むファイルを圧縮パッケージに追加します) )

// 将有指定内容的new.txt文件添加到zip文件中
$zip->addFromString('new.txt', '要添加到new.txt文件中的文本');
ログイン後にコピー

5: extractTO (圧縮パッケージを指定されたディレクトリに解凍します)

$zip->extractTo('test');
ログイン後にコピー

6: getNameIndex (次に従ってファイル名を返します)インデックス)

$zip->getNameIndex(0);//返回压缩包中索引为0的文件名称
ログイン後にコピー

7: getStream (圧縮ファイル内のファイル名に従って、ファイルのテキスト ストリームを取得します)

$zip->getStream('hello.txt');
ログイン後にコピー

8: renameIndex (圧縮ファイル内のファイル名に従って) インデックス (0から開始) 圧縮ファイル内のファイル名を変更します)

/把压缩文件内第一个文件修改成newname.txt
$zip->renameIndex(0,'newname.txt');
ログイン後にコピー

9: renameName (ファイルを変更します)

//把压缩文件内的word.txt修改成newword.txt
$zip->renameName('word.txt','newword.txt');
ログイン後にコピー

10: deleteIndex (圧縮ファイル内のファイル名を元に圧縮ファイル内のファイルを削除)

//把压缩文件内第一个文件删除
$zip->deleteIndex (0);
ログイン後にコピー

11: deleteName (インデックスに基づいて圧縮ファイル内のファイルを削除します。名前でファイルを削除します)

//把压缩文件内的word.txt删除
$zip->deleteName('word.txt');
ログイン後にコピー

上記は、ZipArchive の一般的なメソッドの一部です。簡単な例をいくつか示します:

1: 圧縮パッケージを作成します

$zip = new \ZipArchive;
if ($zip->open('test_new.zip', \ZipArchive::CREATE) === true)
{
  // 将指定文件添加到zip中
  $zip->addFile('test.txt');
   
  // test.txt文件添加到zip并将其重命名为newfile.txt
  $zip->addFile('test.txt', 'newfile.txt');
   
  // 将test.txt文件添加到zip文件中的test文件夹内
  $zip->addFile('test.txt', 'test/newfile.txt');
   
  //将一个空的目录添加到zip中
  $zip->addEmptyDir ('test');
   
  // 将有指定内容的new.txt文件添加到zip文件中
  $zip->addFromString('new.txt', '要添加到new.txt文件中的文本');
   
  // 将有指定内容的new.txt添加到zip文件中的test文件夹
  $zip->addFromString('test/new.txt', '要添加到new.txt文件中的文本');
   
  //将images目录下所有文件添加到zip中
   if ($handle = opendir('images')){
     // 添加目录中的所有文件
     while (false !== ($entry = readdir($handle))){
        if ($entry != "." && $entry != ".." && !is_dir('images/' . $entry)){
            $zip->addFile('images/' . $entry);
        }
     }
     closedir($handle);
   }
   
  // 关闭zip文件
  $zip->close();
}
ログイン後にコピー

2: 圧縮パッケージのファイル情報を取得し、指定されたファイルを解凍します圧縮パッケージ

$zip = new \ZipArchive;
if ($zip->open('test_new.zip') === true) {
  //获取索引为0的文件名称
  var_dump($zip->getNameIndex(0));
   
  //将压缩包文件解压到test目录下
  $zip->extractTo('test');
   
  //获取压缩包指定文件的文本流
  $stream = $zip->getStream('test.txt');
   
  // 关闭zip文件
  $zip->close();
  $str = stream_get_contents($stream); //这里注意获取到的文本编码
  var_dump($str);
}
ログイン後にコピー

3: 圧縮パッケージ内の指定ファイルのファイル名を変更し、圧縮パッケージから削除する ファイル指定

$zip = new \ZipArchive;
if ($zip->open('test_new.zip') === true) {
  //把压缩文件内索引为0的文件修改成newname.txt
  $zip->renameIndex(0,'newname.txt');
  //把压缩文件内的new.txt修改成newword.txt
  $zip->renameName('new.txt','newword.txt');
  //删除压缩文件内索引为0的文件
  $zip->deleteIndex(0);
  //删除压缩文件的test.png
  $zip->deleteName('test.png');
  // 关闭zip文件
  $zip->close();
}
ログイン後にコピー

おすすめ関連記事とチュートリアル:php チュートリアル

以上がPHP は ZipArchive クラスを使用してファイルの圧縮と解凍を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート