PHPでは、zipファイルの関数は通常、 zip_open() 、 zip_read() 、 zip_entry_read()を使用して処理されます。 zipファイルを開き、ファイルエントリを繰り返してファイルの内容を読み取ることができます。この記事では、完全な例を使用して、これら3つの関数を使用してzipファイルを読み取る方法を説明します。
zip_open($ filename)
zipファイルを開き、リソースハンドルを返します。
zip_read($ zip)
zipファイルの次のエントリを読んで、zipエントリリソースを返します。
zip_entry_read($ entry、$ length)
zipエントリの内容を読み、指定されたバイトの最大数を読み取ります。
zip_entry_name($ entry)
現在のzipエントリのファイル名を取得します。
zip_close($ zip)
zipファイルリソースを閉じます。
次の例は、zipファイルを開き、内部のすべてのファイルをトラバースし、コンテンツをブラウザに出力する方法を示しています。
<?php
// ZIPファイルパス(実際のパスに置き換えてください)
$zipFile = 'http://m66.net/path/to/your.zip';
// 開けるZIP書類
$zip = zip_open($zipFile);
if (!$zip || is_numeric($zip)) {
die("无法開けるZIP書類");
}
echo "<h2>ZIP書類内容列表:</h2>";
while ($entry = zip_read($zip)) {
// 获取当前書類名
$fileName = zip_entry_name($entry);
echo "<h3>書類名: $fileName</h3>";
// 開けるZIPエントリ
if (zip_entry_open($zip, $entry)) {
$fileSize = zip_entry_filesize($entry);
$content = '';
// 按块读取書類内容(最も毎回1024バイト)
while ($data = zip_entry_read($entry, 1024)) {
$content .= $data;
}
// 電流を閉じますZIPエントリ
zip_entry_close($entry);
// 输出書類内容(これがテキストの単純な出力です,バイナリデータが含まれる場合があることに注意してください)
echo "<pre>" . htmlspecialchars($content) . "</pre>";
} else {
echo "无法開ける書類エントリ: $fileName<br>";
}
}
// 閉鎖ZIP書類
zip_close($zip);
?>
ZIP_OPEN()はローカルファイルパスをサポートし、リモートURLはPHPに依存するAllow_url_Fopen設定をサポートしています。リモート開口部が失敗した場合は、操作する前にzipファイルをローカルにダウンロードすることをお勧めします。
バイナリファイルのコンテンツを読み取ると、直接出力が文字化けしたコードまたはページの例外を引き起こす可能性があります。必要に応じてデータを処理することをお勧めします。