ネットワーク転送ファイル圧縮には、圧縮後の合計ファイルサイズが大幅に減少し、帯域幅を節約し、スピードを上げます。ユーザーは、ダウンロード後いつでも減圧できます。要するに、圧縮は、あなたとあなたの訪問者のためのファイルのネットワーク転送を大幅に簡素化することができます。
ファイルを手動で圧縮するのは面倒ですが、幸いなことに、PHPはファイルの圧縮と減圧の処理に特化した多くの拡張機能を提供します。これらの拡張機能の関数を使用して、PHPファイルを自動的に圧縮できます。
このチュートリアルでは、ファイルをPHPのzipアーカイブに圧縮し、zipアーカイブからファイルを解凍する方法をガイドします。また、最初に解凍せずに、アーカイブでファイルを削除または名前変更する方法も学びます。
このメソッドのドキュメントを参照して、ファイルを開くと返されるさまざまなエラーコードを理解することができます。 zipファイルが正常に開かれたり作成されている場合、メソッドはziparchive :: uppriteフラグを返します。その特定の名前のアーカイブが存在しない場合、新しいアーカイブは作成されません。 Ziparchive ::組み合わせて作成して、既存のアーカイブを上書きし、その特定の名前のアーカイブがない場合は新しいアーカイブを作成できます。例は次のとおりです。
ziparchive :: create and open()メソッドを使用して、読み取りと書き込みのために新しいまたは既存のアーカイブを開きます。 このセクションでは、Ziparchive :: createに渡されたフラグの異なる組み合わせにより、既存のアーカイブが既に存在する場合は既存のアーカイブを作成するか変更することで生じる可能性のある違いを理解します。既存のアーカイブの変更に関する警告はありません。つまり、このセクションでコードを実行してアーカイブを作成し、元のオプションを新しいオプションに置き換えた後に再度実行すると、予期しない結果が得られます。
$zip->open('my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE);
アーカイブには、サブディレクトリ
ファイル/画像を含む
> wallpapersディレクトリと wallpapersディレクトリからの画像が含まれます。最初は少し混乱する可能性があり、なぜアーカイブ内のすべてを上書きしたいのか(すでに存在する場合)、コードが存在しない場合にエラーをスローしたくない場合は、Ziparchive :: create | ziparchive :: overwriteを使用します。 libzip 1.6.0であるため、空のファイルは有効なアーカイブと見なされなくなったことを覚えておいてください。 Archiveからコンテンツを抽出しますパラメーターを使用して、抽出する単一のファイル名を指定するか、ファイル配列を渡すことができます。
覚えておくべきことの1つは、アーカイブ内のファイルへの正しいパスを指定して抽出する必要があることです。たとえば、前のセクションで、alegreyasans-light.ttfという名前のフォントファイルをアーカイブしました。このファイルは、アーカイブにfont_filesという名前のディレクトリに保存されています。これは、$entries
パラメーターで指定する必要があるパスは、font_files/alegreyasans-light.ttfであることを意味します。
ディレクトリとファイル構造は抽出プロセス中に保持され、ファイルはそれぞれのディレクトリに抽出されます。
2番目のパラメーターが省略されている場合、メソッドはアーカイブ内のすべてのファイルを抽出します。
$zip->open('my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE);
その他のアーカイブコントロール
また、クラスは、すべてを抽出する前にアーカイブに関する詳細情報を入手するのに役立つ他の多くの方法とプロパティを提供します。
ZipArchive
属性を使用することです。アーカイブ内のすべてのファイルを反復したり、必要なファイルのみを抽出したり、アーカイブから削除するなど、他のアクションを実行できます。 count()
numFiles
次の例では、単語
を含むアーカイブ内のすべてのファイルを削除しています。同様のコードを使用して、特定の単語が含まれていないすべてのファイルを削除できます。これらのファイルを反復し、特定の単語を他のコンテンツに置き換えることもできます。 上記のコードでは、1つのファイルを削除するために
を使用します。ただし、それを使用してディレクトリ全体を削除することもできます。<?php $zip = new ZipArchive(); $zip->open('compressed/user_archive.zip', ZipArchive::CREATE); $zip->extractTo('uncompressed/', 'font_files/AlegreyaSans-Light.ttf'); $zip->close(); ?>
同様の関数deleteName()
を使用して、アーカイブ内のファイルの名前を変更できます。
renameName($oldname, $newname)
要約$newname
ZipArchive
の助けを借りて、個々のファイルをより適切に制御でき、それらを変更または削除するのは非常に簡単です。このような機能についてさらに学ぶには、少なくとも一度はドキュメントを読む必要があります。 count()
以上がPHPでファイルをジップおよび解凍する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。