W3docs

zip_entry_open()

La fonction zip_entry_open() en PHP ouvre une entrée dans une archive zip pour en lire le contenu. Déprécié depuis PHP 7.4, supprimé en PHP 8.0.

⚠️ Avis de dépréciation : La fonction zip_entry_open() appartient à l'extension zip héritée, qui a été dépréciée dans PHP 7.4 et supprimée dans PHP 8.0. Les exemples ci-dessous sont fournis à titre de référence historique uniquement. Pour les applications PHP modernes, utilisez plutôt la classe ZipArchive.

zip_entry_open() prépare une entrée (fichier) individuelle à l'intérieur d'une archive zip ouverte afin que son contenu puisse être lu. Elle fonctionne en tandem avec zip_open(), zip_read() et zip_entry_read() : vous ouvrez l'archive, itérez vers une entrée, ouvrez cette entrée, puis lisez son contenu. Sans appeler zip_entry_open() au préalable, un appel à zip_entry_read() n'a rien à lire.

Cette page couvre la signature de la fonction, ses paramètres et sa valeur de retour, un exemple complet de lecture d'une entrée, et — surtout — le remplacement moderne par la classe ZipArchive à utiliser aujourd'hui.

Syntaxe

resource zip_entry_open(resource $zip, resource $zip_entry, string $mode = "r")

Paramètres

ParamètreDescription
$zipLe handle de l'archive retourné par zip_open().
$zip_entryUn handle d'entrée retourné par zip_read().
$modeLe mode d'accès. L'extension zip héritée ne prenait en charge que l'accès en lecture, donc ce paramètre est effectivement toujours "r".

L'argument $password en quatrième position mentionné dans certaines anciennes références n'a jamais été fonctionnel dans l'extension zip intégrée ; il est ignoré.

Valeur de retour

Retourne true en cas de succès ou false en cas d'échec. Malgré l'indication de type resource dans les anciens documents, vous n'obtenez pas de nouveau handle en retour — vous continuez à passer le même handle $zip_entry à zip_entry_read().

Exemple d'utilisation

Exemple : Lire un fichier depuis une archive zip

Ouvrez l'archive, parcourez les entrées, ouvrez une entrée, lisez son contenu et nettoyez :

$zip = zip_open("example.zip");

if (is_resource($zip)) {
    while ($zip_entry = zip_read($zip)) {
        // Prepare this entry for reading
        if (zip_entry_open($zip, $zip_entry, "r")) {
            $name     = zip_entry_name($zip_entry);
            $contents = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));

            echo "$name: $contents\n";

            zip_entry_close($zip_entry);
        }
    }
    zip_close($zip);
}

Ici, zip_open() ouvre l'archive, zip_read() avance vers chaque entrée à tour de rôle, zip_entry_open() rend l'entrée courante lisible, et zip_entry_read() retourne ses octets. Associez toujours chaque ouverture réussie à zip_entry_close(), et fermez l'archive avec zip_close() lorsque vous avez terminé.

Alternative moderne : la classe ZipArchive

Pour obtenir le même résultat avec PHP 8.0+, utilisez la classe intégrée ZipArchive :

$zip = new ZipArchive;

if ($zip->open('example.zip') === true) {
    // Loop over every entry by index
    for ($i = 0; $i < $zip->numFiles; $i++) {
        $name     = $zip->getNameIndex($i);
        $contents = $zip->getFromIndex($i);

        echo "$name: $contents\n";
    }
    $zip->close();
}

ZipArchive ne nécessite pas d'étape séparée pour « ouvrir l'entrée » : getFromIndex() (ou getFromName()) lit directement le contenu d'une entrée, et fonctionne avec toutes les versions modernes de PHP.

Conclusion

Dans cet article, nous avons présenté la fonction PHP zip_entry_open() et comment elle permet d'ouvrir un fichier dans une archive zip. Nous avons expliqué ce que fait la fonction, sa syntaxe, et fourni un exemple de son utilisation dans un scénario pratique. Notez que zip_entry_open() est dépréciée et supprimée dans PHP 8.0 ; pour les projets modernes, utilisez la classe ZipArchive pour ouvrir et lire des fichiers dans une archive zip.

Pratique

Pratique
Que fait la fonction ZipEntry::open() en PHP ?
Que fait la fonction ZipEntry::open() en PHP ?
Was this page helpful?