Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction zip_read () de PHP pour lire l'étape par étape de l'entrée suivante dans un fichier zip?

Comment utiliser la fonction zip_read () de PHP pour lire l'étape par étape de l'entrée suivante dans un fichier zip?

M66 2025-07-04

Le traitement des fichiers compressés dans PHP est une tâche courante, en particulier lors de la gestion des données emballées téléchargées ou du déploiement automatisé. Parmi eux, zip_read () est une ancienne interface de Ziparchive , utilisée pour traverser chaque entrée dans un fichier zip. Bien que cette méthode ait été remplacée de plus en plus par la classe ziparchive orientée objet, zip_read () a toujours une valeur pratique dans certains projets spécifiques ou besoins de compatibilité.

Cet article utilisera des exemples réels pour montrer progressivement comment utiliser la fonction zip_read () pour lire les informations de chaque entrée dans un fichier ZIP.

1. Préparez un fichier zip

Vous avez d'abord besoin d'un fichier zip, qui peut être n'importe quelle collection de fichiers, tels qu'un package compressé contenant plusieurs fichiers .txt . Supposons que vous ayez déjà un fichier compressé appelé example.zip et le placez dans le répertoire du serveur, par exemple:

 /var/www/html/files/example.zip

2. Ouvrez le fichier zip

PHP fournit la fonction zip_open () pour ouvrir le fichier zip et renvoyer une poignée de ressource. Cette poignée sera utilisée pour les entrées de lecture ultérieures.

 <?php
$zipPath = '/var/www/html/files/example.zip';
$zip = zip_open($zipPath);

if (is_resource($zip)) {
    echo "ZIP Le fichier ouvert avec succès。\n";
} else {
    echo "Impossible d&#39;ouvrir ZIP document。\n";
}
?>

3. Utilisez zip_read () pour traverser l'entrée

Une fois le fichier zip ouvert, nous pouvons utiliser zip_read () pour itérer chaque entrée là-bas. Voici le processus de lecture complet:

 <?php
$zipPath = '/var/www/html/files/example.zip';
$zip = zip_open($zipPath);

if (is_resource($zip)) {
    while ($zipEntry = zip_read($zip)) {
        $entryName = zip_entry_name($zipEntry);
        echo "Découvrez les inscriptions: " . $entryName . "\n";

        if (zip_entry_open($zip, $zipEntry, "r")) {
            $contents = zip_entry_read($zipEntry, zip_entry_filesize($zipEntry));
            echo "Aperçu du contenu: " . substr($contents, 0, 100) . "\n\n";
            zip_entry_close($zipEntry);
        }
    }
    zip_close($zip);
} else {
    echo "Ouvrir ZIP document失败。\n";
}
?>

Dans ce code, nous obtenons l'entrée actuelle via zip_read () , puis obtenons le nom de fichier via zip_entry_name () , et lisons le contenu du fichier à l'aide de zip_entry_read () . Notez que, comme certaines entrées peuvent être des fichiers binaires ou volumineux, seuls les 100 premiers caractères sont présentés ici.

4. Un exemple de scénario d'application pratique

Supposons que vous fournissiez une interface de téléchargement et que le fichier zip téléchargé par l'utilisateur sera décompressé par le serveur et vérifiez si le contenu est légal. Vous pouvez traverser le fichier via zip_read () et savoir s'il existe un nom de fichier spécifique, tel que config.json :

 <?php
$zipPath = '/var/www/html/uploads/user_upload.zip';
$zip = zip_open($zipPath);
$foundConfig = false;

if (is_resource($zip)) {
    while ($zipEntry = zip_read($zip)) {
        if (zip_entry_name($zipEntry) === 'config.json') {
            $foundConfig = true;
            break;
        }
    }
    zip_close($zip);
}

if ($foundConfig) {
    echo "Inclus dans le package de téléchargement config.json,Répondre aux exigences。\n";
} else {
    echo "Manque config.json document,Téléchargement non valide。\n";
}
?>

5. Choses à noter

  • zip_read () est une ancienne interface procédurale, et il est recommandé d'utiliser Ziparchive dans de nouveaux projets.

  • Dans les scénarios à forte concurrence, soyez prudent lorsque vous faites fonctionner manuellement les poignées de ressources, les problèmes de libération de la manche de fichier doivent être particulièrement bons.

  • Si vous utilisez la fonction de fichier de téléchargement Web, assurez-vous que les restrictions de taille de téléchargement pertinentes en php.ini sont correctement configurées, telles que upload_max_filesize et post_max_size .

6. Conclusion

Bien que zip_read () soit une ancienne fonction de fonctionnement PHP ZIP, il a toujours l'apprentissage et l'utilisation de la valeur dans certains scénarios. Grâce aux exemples de cet article, je pense que vous avez appris à utiliser la fonction zip_read () étape par étape pour lire chaque entrée dans un fichier ZIP et l'appliquer à des projets réels, tels que la vérification automatisée du contenu, télécharger une revue de fichier, etc.