Position actuelle: Accueil> Derniers articles> Lisez un type de fichier spécifique dans un fichier zip (tel que .txt)

Lisez un type de fichier spécifique dans un fichier zip (tel que .txt)

M66 2025-06-05

Le traitement des fichiers ZIP dans PHP, en particulier l'extraction de types de fichiers spécifiques (tels que les fichiers texte .txt ), peut être effectué via la classe Ziparchive ou la fonction ZIP_READ sous-jacente. Bien que Ziparchive soit plus moderne et facile à utiliser, Zip_read est toujours précieux dans certaines versions plus anciennes ou des scénarios spéciaux. Cet article présentera comment utiliser zip_read pour lire tous les contenus de fichiers .txt dans les fichiers ZIP.

Préparation

Tout d'abord, assurez-vous que l'extension ZIP est activée dans votre environnement PHP. Vérifiez si la ligne suivante est incluse dans php.ini :

 extension=zip

Vous pouvez également vérifier en exécutant le code PHP suivant:

 <?php
if (!function_exists('zip_open')) {
    die("ZIP Extension non activée!");
}
?>

Exemple de code: Lisez tous les fichiers .txt

Voici un exemple complet montrant comment ouvrir un fichier zip, parcourez toutes les entrées et lisez uniquement le contenu du fichier avec l'extension .txt .

 <?php
$zipFile = '/path/to/archive.zip'; // Remplacer par le chemin réel

$zip = zip_open($zipFile);
if (is_resource($zip)) {
    while ($entry = zip_read($zip)) {
        $fileName = zip_entry_name($entry);
        // Processus uniquement .txt document
        if (pathinfo($fileName, PATHINFO_EXTENSION) === 'txt') {
            if (zip_entry_open($zip, $entry, 'r')) {
                echo "读取document: $fileName\n";
                $contents = zip_entry_read($entry, zip_entry_filesize($entry));
                echo "Le contenu est le suivant:\n$contents\n\n";
                zip_entry_close($entry);
            }
        }
    }
    zip_close($zip);
} else {
    echo "Impossible d&#39;ouvrir ZIP document。\n";
}
?>

Conseils de sécurité

  1. Vérification du chemin : le chemin du fichier renvoyé par zip_entry_name () peut contenir une structure de répertoire ou tenter d'effectuer la traversée de chemin. Assurez-vous de vérifier sa sécurité lorsque vous l'utilisez.

  2. Limiter la taille de lecture : certains fichiers .txt peuvent être très importants et doivent être limités lorsque zip_entry_read () pour empêcher le débordement de la mémoire.

  3. Gestion des erreurs : le code ci-dessus n'inclut pas la logique complète de gestion des erreurs. Des journaux et des mécanismes de gestion des exceptions doivent être ajoutés en fonction de circonstances spécifiques dans l'environnement de production.

Exemples de scénarios d'application

Supposons que vous développez une plate-forme de traitement par lots en ligne qui permet aux utilisateurs de télécharger des packages ZIP contenant plusieurs fichiers .txt et d'effectuer une conversion statistique ou de format de contenu. Grâce à la méthode ci-dessus, le contenu texte peut être facilement extrait et la logique de traitement ultérieure peut être appelée.

Vous pouvez intégrer cette logique dans le script de traitement de téléchargement, par exemple:

 $uploadedZip = $_FILES['file']['tmp_name'];
// 对上传document进行检查后调用读取函数
processTxtFilesFromZip($uploadedZip);

En combinant le formulaire de téléchargement et les fonctions de vérification de sécurité, une simple plate-forme de traitement de fichiers zip peut être construite. Visitez https://m66.net/tools/zip-reader pour obtenir plus de démonstrations réelles et de références de code source pour de tels outils.

résumé

Bien que l'interface zip_read soit un peu encombrante que Ziparchive , elle est toujours une valeur de référence lors de l'exécution d'opérations fines sur des fichiers zip. En combinant raisonnablement les fonctions de série Zip_read et Zip_entry_ * , vous pouvez lire de manière flexible des types de fichiers spécifiques tels que .txt pour diverses tâches de traitement d'automatisation et d'arrière-plan.