PHPでの圧縮ファイルの処理は、特にアップロードされたパッケージデータまたは自動展開を処理する場合の一般的なタスクです。その中で、 Zip_read()はZiparchiveの古いインターフェイスであり、ZIPファイルのすべてのエントリを通過するために使用されます。この方法は、オブジェクト指向のZiparchiveクラスにますます置き換えられていますが、 ZIP_READ()は、特定の特定のプロジェクトまたは互換性のニーズの下で実用的な価値を持っています。
この記事では、実際の例を使用して、 zip_read()関数を使用して各エントリの情報をzipファイルの情報を読み取る方法を徐々に示します。
まず、いくつかの.txtファイルを含む圧縮パッケージなど、ファイルの任意のコレクションであるzipファイルが必要です。 example.zipという圧縮ファイルが既にあると仮定します。たとえば、サーバーディレクトリに配置します。
/var/www/html/files/example.zip
PHPはZIP_OPEN()関数を提供してZIPファイルを開き、リソースハンドルを返します。このハンドルは、後続の読み取りエントリに使用されます。
<?php
$zipPath = '/var/www/html/files/example.zip';
$zip = zip_open($zipPath);
if (is_resource($zip)) {
echo "ZIP ファイルを正常に開きます。\n";
} else {
echo "開くことができません ZIP 書類。\n";
}
?>
zipファイルが開かれたら、 zip_read()を使用して各エントリを繰り返します。これが完全な読書プロセスです:
<?php
$zipPath = '/var/www/html/files/example.zip';
$zip = zip_open($zipPath);
if (is_resource($zip)) {
while ($zipEntry = zip_read($zip)) {
$entryName = zip_entry_name($zipEntry);
echo "エントリを発見します: " . $entryName . "\n";
if (zip_entry_open($zip, $zipEntry, "r")) {
$contents = zip_entry_read($zipEntry, zip_entry_filesize($zipEntry));
echo "コンテンツプレビュー: " . substr($contents, 0, 100) . "\n\n";
zip_entry_close($zipEntry);
}
}
zip_close($zip);
} else {
echo "開ける ZIP 書類失败。\n";
}
?>
このコードでは、 zip_read()を介して現在のエントリを取得し、 zip_entry_name()を介してファイル名を取得し、 zip_entry_read()を使用してファイルコンテンツを読み取ります。一部のエントリはバイナリまたは大きなファイルである可能性があるため、ここでは最初の100文字のみがプレビューされていることに注意してください。
アップロードインターフェイスを提供すると、ユーザーがアップロードしたzipファイルがサーバーによって解凍され、コンテンツが合法かどうかを確認するとします。 zip_read()を介してファイルをトラバースし、 config.jsonなどの特定のファイル名があるかどうかを確認できます。
<?php
$zipPath = '/var/www/html/uploads/user_upload.zip';
$zip = zip_open($zipPath);
$foundConfig = false;
if (is_resource($zip)) {
while ($zipEntry = zip_read($zip)) {
if (zip_entry_name($zipEntry) === 'config.json') {
$foundConfig = true;
break;
}
}
zip_close($zip);
}
if ($foundConfig) {
echo "アップロードパッケージに含まれています config.json,要件を満たします。\n";
} else {
echo "足らない config.json 書類,無効なアップロード。\n";
}
?>
Zip_read()は手続き上の古いインターフェイスであり、新しいプロジェクトでZiparchiveを使用することをお勧めします。
並行性の高いシナリオでは、手動で操作するリソースハンドルを手動で操作する場合は、ファイルハンドルのリリースの問題が特に良いはずです。
Webアップロードファイル関数を使用する場合は、 upload_max_filesizeやpost_max_sizeなど、 php.iniの関連するアップロードサイズ制限が適切に構成されていることを確認してください。
ZIP_READ()は古いPHP ZIP操作機能ですが、一部のシナリオではまだ学習と使用価値があります。この記事の例を通して、 zip_read()関数を段階的に使用してzipファイルのすべてのエントリを読み取り、自動コンテンツ検証、ファイルレビューをアップロードするなどの実際のプロジェクトに適用する方法を学んだと思います。