Position actuelle: Accueil> Derniers articles> Utilisez zip_entry_read () pour lire le contenu de l'entrée zip actuelle

Utilisez zip_entry_read () pour lire le contenu de l'entrée zip actuelle

M66 2025-06-06

Lors du traitement des fichiers compressés dans PHP, zip_read () et zip_entry_read () sont deux fonctions très utiles qui peuvent nous aider à lire le contenu des fichiers ZIP. Cet article expliquera en détail comment utiliser ces deux fonctions en combinaison pour lire et publier le contenu de chaque entrée dans l'élément de package compressé par Zip par élément.


1. Fonction Introduction

  • zip_read (ressource $ zip)
    Cette fonction accepte une ressource zip ouverte et renvoie une ressource pointant vers une entrée zip, représentant l'entrée actuelle dans ZIP. Si toutes les entrées sont lues, FALSE est renvoyé.

  • zip_entry_read (ressource $ zip_entry, int $ len = 1024)
    Cette fonction lit le contenu de l'entrée zip actuelle de la longueur spécifiée. Les ressources et le nombre d'octets à lire par l'entrée ZIP actuelle doivent être transmises.


2. Exemple d'explication de code

L'exemple de code suivant montre comment ouvrir un fichier zip, itérer via toutes les entrées et sortir le contenu de chaque entrée:

 <?php
// Ouvrir un Zip document,Exemple de chemin:http://m66.net/example.zip
$zip = zip_open('http://m66.net/example.zip');

if (!$zip) {
    echo "Impossible d&#39;ouvrir Zip document。";
    exit;
}

// Traversée Zip Toutes les entrées dans
while ($zip_entry = zip_read($zip)) {
    // Obtenez le nom d&#39;entrée
    $entry_name = zip_entry_name($zip_entry);
    echo "Lire les entrées: $entry_name\n";

    // Ouvrez l&#39;entrée actuelle pour lire le contenu
    if (zip_entry_open($zip, $zip_entry)) {
        $content = '';
        
        // 循环Lire les entrées内容,Évitez le contenu trop grand pour être lu en une seule fois
        while ($data = zip_entry_read($zip_entry, 1024)) {
            $content .= $data;
        }

        // Contenu d&#39;entrée de sortie
        echo "Le contenu est le suivant:\n";
        echo $content . "\n";

        // Fermez l&#39;entrée actuelle
        zip_entry_close($zip_entry);
    } else {
        echo "Impossible d&#39;ouvrir条目 $entry_name Jouer à la lecture。\n";
    }

    echo "------------------------\n";
}

// fermeture Zip ressource
zip_close($zip);
?>

3. Description du code

  • La fonction ZIP_OPEN () est utilisée pour ouvrir des fichiers ZIP, prend en charge les chemins locaux ou peut être une URL distante (comme http://m66.net/example.zip dans l'exemple).

  • Lisez chaque entrée via la boucle zip_read () .

  • Appelez zip_entry_open () sur chaque entrée pour l'ouvrir, puis utilisez zip_entry_read () pour lire le contenu. Ici, 1024 octets sont lus à la fois et boucle jusqu'à la fin du contenu.

  • Après avoir lu, fermez l'entrée et fermez enfin toute la ressource de fichier ZIP.


4. Choses à noter

  • La fonction ZIP_READ de PHP repose sur l'extension ZIP pour s'assurer que l'extension a été activée dans votre environnement.

  • L'accès à URL distant nécessite que le serveur prenne en charge allow_url_fopen .

  • Pour les fichiers grands, il est recommandé de contrôler raisonnablement la taille du bloc de lecture pour éviter le débordement de la mémoire.

  • Cette méthode convient pour lire des fichiers texte ou des fichiers binaires plus petits. Pour les opérations zip complexes, vous pouvez envisager d'utiliser la classe Ziparchive .