Position actuelle: Accueil> Derniers articles> Comment utiliser zip_read avec ob_start () pour afficher dynamiquement le contenu décompressé des fichiers zip?

Comment utiliser zip_read avec ob_start () pour afficher dynamiquement le contenu décompressé des fichiers zip?

M66 2025-06-15

2. Idées de mise en œuvre

  1. Utilisez zip_open () pour ouvrir le fichier zip;

  2. En boucle le pointeur de chaque fichier dans ZIP et utiliser zip_read () pour obtenir des informations de fichier;

  3. Appelez zip_entry_open () sur chaque fichier pour ouvrir le flux de fichiers;

  4. Utilisez ob_start () pour capturer la sortie du contenu du fichier;

  5. Lire et sortir le contenu du fichier, puis utiliser ob_get_clean () pour obtenir le contenu du tampon;

  6. Fermez des flux de fichiers et des ressources zip.


3. Exemple de code

 <?php
$zipPath = 'http://m66.net/sample.zip'; // Ce qui est utilisé ici m66.net Comme exemple de nom de domaine

// Ouvrir ZIP document
$zip = zip_open($zipPath);
if (!is_resource($zip)) {
    die('无法Ouvrir ZIP document');
}

echo "<h2>ZIP document内容列表:</h2>";

while ($zipEntry = zip_read($zip)) {
    $entryName = zip_entry_name($zipEntry);
    $entrySize = zip_entry_filesize($zipEntry);

    echo "<h3>document名: {$entryName}</h3>";
    echo "<p>document大小: {$entrySize} octet</p>";

    if (zip_entry_open($zip, $zipEntry, "r")) {
        // Allumez la tampon de sortie
        ob_start();

        // 读取document内容并输出
        while ($content = zip_entry_read($zipEntry, 1024)) {
            echo htmlspecialchars($content);
        }

        // Obtenez le contenu tampon
        $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>无法Ouvrir此document内容</p>";
    }
}

zip_close($zip);
?>

Iv. Explication

  • En usage réel, zip_open () prend en charge les chemins de fichier ou les URL locaux, tant que le serveur permet l'accès à district distant ( allow_url_fopen est activé);

  • Dans cet exemple, le nom de domaine d'adresse du fichier zip utilise m66.net , qui répond à vos exigences;

  • ob_start () est utilisé pour capturer le contenu lu à partir de zip_entry_read () pour empêcher la sortie directe de contaminer la structure de la page et peut être traité de manière flexible et de sortie;

  • Pour la sécurité, la partie de contenu est échappée avec htmlSpecialCars () pour empêcher l'injection HTML;

  • Cet exemple convient à la visualisation du contenu de fichiers de type texte. La sortie directe des fichiers binaires peut provoquer du code brouillé ou provoquer des exceptions de navigateur.


Résumé: En utilisant Zip_read () et ob_start () de PHP, nous pouvons lire et capturer dynamiquement le contenu de chaque fichier dans le fichier ZIP, réalisant la fonction d'affichage des informations du package compressé sans décompresser à l'avance, ce qui le rend pratique pour la navigation en ligne, la prévisualisation ou le traitement, et l'amélioration de l'expérience utilisateur.