Position actuelle: Accueil> Derniers articles> Comment utiliser zip_read pour déterminer si la dernière entrée zip a été lue?

Comment utiliser zip_read pour déterminer si la dernière entrée zip a été lue?

M66 2025-06-23

Lorsque vous travaillez avec des fichiers ZIP dans PHP, il est souvent nécessaire de traverser toutes les entrées du package compressé. PHP fournit la fonction zip_read () avec zip_entry_read () pour lire le contenu des fichiers zip, mais en fonctionnement réel, comment déterminer si la dernière entrée a été lue est un problème courant.

Cet article expliquera en détail comment utiliser l'extension ZIP de PHP et la fonction zip_read () pour déterminer si toutes les entrées du package compressé ont été lues.

1. Examen de l'utilisation de base

Tout d'abord, nous devons ouvrir un fichier zip avec zip_open () , renvoyer une poignée de ressource, puis obtenir chaque objet d'entrée via zip_read () . L'exemple est le suivant:

 $zip = zip_open("http://m66.net/path/to/yourfile.zip");
if (is_resource($zip)) {
    while ($entry = zip_read($zip)) {
        echo "Lire les entrées: " . zip_entry_name($entry) . "\n";
        // Lire les entréescontenu
        if (zip_entry_open($zip, $entry)) {
            $content = zip_entry_read($entry, zip_entry_filesize($entry));
            echo $content;
            zip_entry_close($entry);
        }
    }
    zip_close($zip);
} else {
    echo "Ouvrir ZIP Échec du fichier";
}

Dans le code ci-dessus, nous obtenons chaque entrée en séquence par while ($ entry = zip_read ($ zip)) , et la fin de la boucle signifie que toutes les entrées ont été lues.

2. Comment déterminer que la dernière entrée a été lue?

zip_read () renvoie la ressource d'entrée suivante. Si false est retourné, cela signifie qu'il n'y a plus d'entrées. En fait, déterminer directement si la valeur de retour de zip_read () est fausse consiste à déterminer si toutes les entrées ont été lues.

Exemple:

 $zip = zip_open("http://m66.net/path/to/yourfile.zip");
if (is_resource($zip)) {
    while (($entry = zip_read($zip)) !== false) {
        echo "Entrée actuelle: " . zip_entry_name($entry) . "\n";
        // Traiter le contenu de l'entrée
    }
    echo "Toutes les entrées ont été lues。\n";
    zip_close($zip);
}

Dans ce code, lorsque zip_read () renvoie false , le programme peut considérer que toutes les entrées ont été traversées.

3. Exemple complet

Voici une démonstration qui lit toutes les entrées d'un fichier zip et publie le nom et le contenu:

 <?php
$zipFile = "http://m66.net/files/example.zip";

$zip = zip_open($zipFile);
if (!is_resource($zip)) {
    die("无法Ouvrir ZIP document:$zipFile\n");
}

while (($entry = zip_read($zip)) !== false) {
    $entryName = zip_entry_name($entry);
    echo "Nom d&#39;entrée: $entryName\n";

    if (zip_entry_open($zip, $entry)) {
        $entrySize = zip_entry_filesize($entry);
        $content = zip_entry_read($entry, $entrySize);
        echo "contenu:\n$content\n";
        zip_entry_close($entry);
    } else {
        echo "无法Ouvrir条目: $entryName\n";
    }
}

echo "Toutes les entrées ont été lues。\n";
zip_close($zip);
?>

4. Résumé

  • zip_read () renvoie la prochaine ressource d'entrée zip à chaque fois qu'elle est appelée et renvoie false après avoir lu toutes les entrées.

  • Pour déterminer si la dernière entrée a été lue, vérifiez simplement si la valeur de retour de zip_read () est fausse .

  • La combinaison de zip_entry_open () et de zip_entry_read () peut lire le contenu d'entrée.

Grâce aux méthodes ci-dessus, vous pouvez traverser efficacement et avec précision toutes les entrées du fichier zip et juger de la progression de la lecture.