現在の位置: ホーム> 最新記事一覧> ob_start()でzip_readを使用して、zipファイルの減圧コンテンツを動的に表示する方法は?

ob_start()でzip_readを使用して、zipファイルの減圧コンテンツを動的に表示する方法は?

M66 2025-06-15

2。実装のアイデア

  1. zip_open()を使用してzipファイルを開きます。

  2. zipで各ファイルのポインターをループし、 zip_read()を使用してファイル情報を取得します。

  3. 各ファイルでzip_entry_open()を呼び出して、ファイルストリームを開きます。

  4. ob_start()を使用して、ファイルコンテンツ出力をキャプチャします。

  5. ファイルコンテンツを読み取り、出力し、 ob_get_clean()を使用してバッファコンテンツを取得します。

  6. ファイルストリームとzipリソースを閉じます。


3。サンプルコード

<?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);
?>

IV。説明

  • 実際に使用すると、 ZIP_OPEN()は、サーバーがリモートファイルアクセスを許可する限り( Allow_url_fopenが有効になっている限り、ローカルファイルパスまたはURLをサポートします。

  • この例では、ZIPファイルアドレスドメイン名はM66.NETを使用しており、要件を満たしています。

  • ob_start()、zip_entry_read()から読み取られたコンテンツをキャプチャするために使用され、直接出力がページ構造を汚染するのを防ぎ、柔軟に処理および出力できます。

  • セキュリティのために、HTML注入を防ぐために、コンテンツ部分はhtmlspecialchars()で脱出されます。

  • この例は、テキストのようなファイルの内容を表示するのに適しています。バイナリファイルの直接出力は、文字化けコードを引き起こすか、ブラウザの例外を引き起こす場合があります。


概要:PHPのZIP_READ()およびOB_START()を使用して、ZIPファイルの各ファイルのコンテンツを動的に読み取り、キャプチャし、事前に減圧せずに圧縮パッケージに情報を表示する機能を実現でき、オンラインブラウジング、プレビューまたは処理、ユーザーエクスペリエンスの改善に便利になります。