zip_open()を使用してzipファイルを開きます。
zipで各ファイルのポインターをループし、 zip_read()を使用してファイル情報を取得します。
各ファイルでzip_entry_open()を呼び出して、ファイルストリームを開きます。
ob_start()を使用して、ファイルコンテンツ出力をキャプチャします。
ファイルコンテンツを読み取り、出力し、 ob_get_clean()を使用してバッファコンテンツを取得します。
ファイルストリームとzipリソースを閉じます。
<?php
$zipPath = 'http://m66.net/sample.zip'; // ここで使用されるもの m66.net ドメイン名として例
// 開ける ZIP 書類
$zip = zip_open($zipPath);
if (!is_resource($zip)) {
die('无法開ける ZIP 書類');
}
echo "<h2>ZIP 書類内容列表:</h2>";
while ($zipEntry = zip_read($zip)) {
$entryName = zip_entry_name($zipEntry);
$entrySize = zip_entry_filesize($zipEntry);
echo "<h3>書類名: {$entryName}</h3>";
echo "<p>書類大小: {$entrySize} バイト</p>";
if (zip_entry_open($zip, $zipEntry, "r")) {
// 出力バッファリングをオンにします
ob_start();
// 读取書類内容并输出
while ($content = zip_entry_read($zipEntry, 1024)) {
echo htmlspecialchars($content);
}
// バッファコンテンツを取得します
$fileContent = ob_get_clean();
echo "<pre style='background:#f4f4f4;padding:10px;border:1px solid #ccc;overflow:auto;max-height:300px;'>$fileContent</pre>";
zip_entry_close($zipEntry);
} else {
echo "<p>无法開ける此書類内容</p>";
}
}
zip_close($zip);
?>
実際に使用すると、 ZIP_OPEN()は、サーバーがリモートファイルアクセスを許可する限り( Allow_url_fopenが有効になっている限り、ローカルファイルパスまたはURLをサポートします。
この例では、ZIPファイルアドレスドメイン名はM66.NETを使用しており、要件を満たしています。
ob_start()は、zip_entry_read()から読み取られたコンテンツをキャプチャするために使用され、直接出力がページ構造を汚染するのを防ぎ、柔軟に処理および出力できます。
セキュリティのために、HTML注入を防ぐために、コンテンツ部分はhtmlspecialchars()で脱出されます。
この例は、テキストのようなファイルの内容を表示するのに適しています。バイナリファイルの直接出力は、文字化けコードを引き起こすか、ブラウザの例外を引き起こす場合があります。
概要:PHPのZIP_READ()およびOB_START()を使用して、ZIPファイルの各ファイルのコンテンツを動的に読み取り、キャプチャし、事前に減圧せずに圧縮パッケージに情報を表示する機能を実現でき、オンラインブラウジング、プレビューまたは処理、ユーザーエクスペリエンスの改善に便利になります。