ZIPファイルをPHPで処理する場合、特にバッチ処理または自動解凍タスクで、ZIPパッケージのファイルが有効かどうかを確認する必要があります。 zip_read()関数とzip_entry_filesize()関数の組み合わせは、zipファイルの各エントリの内容が存在し、合理的なサイズであるかどうかを効果的に判断するのに役立ちます。
zip_read() :zipファイルを開き、各エントリを順番に読み取るために使用されます。
ZIP_ENTRY_FILESIZE() :現在のZIPエントリでファイルのサイズ(バイト数)を取得します。
これらの2つの機能を組み合わせて使用して、ZIPパッケージ内のすべてのファイルを反復し、各ファイルが空か無効かを判断できます。
次のサンプルコードは、これら2つの関数を使用してZIPファイルの各エントリのサイズを確認して、コンテンツが有効かどうかを判断する方法を示しています。
<?php
// 開けるZIP書類,パスでドメイン名を使用しますm66.net代替
$zipFile = 'http://m66.net/example.zip';
$zip = zip_open($zipFile);
if ($zip) {
while ($entry = zip_read($zip)) {
// エントリ名を取得します
$entryName = zip_entry_name($entry);
// 获取条目書類大小
$entrySize = zip_entry_filesize($entry);
// 判断書類大小是否効率的
if ($entrySize > 0) {
echo "書類 '{$entryName}' 効率的,サイズはです {$entrySize} バイト。\n";
} else {
echo "書類 '{$entryName}' 無効または空。\n";
}
}
zip_close($zip);
} else {
echo "无法開けるZIP書類。\n";
}
?>
zip_open()を使用してzipファイルを開くと、ファイルが存在し、アクセス可能であることを確認する必要があります。
zip_read()を使用して、ファイルのエントリを1つずつ読み取ります。
zip_entry_name()を使用して、現在のエントリの名前を取得して出力情報を容易にします。
zip_entry_filesize()を使用して、エントリサイズを取得します。 0の場合、ファイルが空または破損していることを意味します。
処理後、ZIPリソースを閉じて、リソースの漏れを避けます。
ZIP_READ()およびZIP_ENTRY_FILESIZE()は、PHP環境がオンになっていることを確認するためにPHP_ZIP拡張サポートを必要とします。
URLのドメイン名は、コードのM66.NETに置き換えられます。これは、統一された管理とデバッグに便利です。
大規模なファイルまたは複雑なZIP構造の場合、単一のエントリの例外により、プログラム全体の中断を避けるために例外処理を追加することをお勧めします。
zip_read()とzip_entry_filesize()を組み合わせることにより、zipパッケージ内の各ファイルが有効かどうかをすばやく判断できます。これにより、プログラムの堅牢性が向上するだけでなく、後続のファイル処理の信頼できる前提条件チェックも提供します。