Dans PHP, zip_entry_name et zip_entry_read sont des fonctions utilisées pour faire fonctionner les fichiers zip. Grâce à ces deux fonctions, nous pouvons lire le contenu spécifique dans le fichier zip. Dans cet article, nous présenterons l'utilisation de ces deux fonctions et combinerons des cas réels pour montrer comment lire le contenu du fichier dans des fichiers ZIP via ces deux fonctions.
Les fichiers ZIP sont un format de fichiers compressé commun utilisé pour compresser plusieurs fichiers et répertoires en un seul fichier pour un stockage et un transfert faciles. Le format Zip prend en charge la compression sans perte et peut contenir plusieurs types de fichiers. Afin de manipuler des fichiers ZIP dans PHP, nous pouvons utiliser la classe Ziparchive ou utiliser les fonctions de série Zip_ * sous-jacentes pour traiter directement les fichiers ZIP.
La fonction zip_entry_name est utilisée pour obtenir le nom d'une entrée (c'est-à-dire le fichier) dans un fichier zip. Cette fonction doit utiliser la fonction zip_read pour lire l'entrée de fichier dans la mémoire après avoir ouvert un fichier ZIP avant de pouvoir l'appeler.
Définition de la fonction:
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">zip_entry_name</span></span><span> ( resource </span><span><span class="hljs-variable">$zip_entry</span></span><span> )
</span></span>
paramètre:
$ zip_entry : la ressource d'entrée renvoyée par la fonction zip_read .
Valeur de retour:
Renvoie une chaîne indiquant le nom de l'entrée. Si une erreur se produit, FALSE est renvoyé.
La fonction zip_entry_read est utilisée pour lire le contenu d'une entrée dans un fichier zip. Cette fonction peut lire le contenu du fichier dans une chaîne pour un traitement ultérieur.
Définition de la fonction:
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">zip_entry_read</span></span><span> ( resource </span><span><span class="hljs-variable">$zip_entry</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> )
</span></span>
paramètre:
$ zip_entry : la ressource d'entrée renvoyée par la fonction zip_read .
$ Longueur : le nombre maximum d'octets lus par temps. Normalement, il peut être réglé sur la taille de l'entrée.
Valeur de retour:
Renvoie une chaîne représentant le contenu de lecture. Si la lecture échoue, FALSE est renvoyé.
Voici un exemple simple montrant comment utiliser zip_entry_name et zip_entry_read pour lire le contenu dans un fichier zip.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// OuvrirZIPdocument</span></span><span>
</span><span><span class="hljs-variable">$zip</span></span><span> = </span><span><span class="hljs-title function_ invoke__">zip_open</span></span><span>(</span><span><span class="hljs-string">'example.zip'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$zip</span></span><span>) {
</span><span><span class="hljs-comment">// TraverséeZIPdocument中的所有条目</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$zip_entry</span></span><span> = </span><span><span class="hljs-title function_ invoke__">zip_read</span></span><span>(</span><span><span class="hljs-variable">$zip</span></span><span>)) {
</span><span><span class="hljs-comment">// Obtenez le nom de l'entrée</span></span><span>
</span><span><span class="hljs-variable">$entry_name</span></span><span> = </span><span><span class="hljs-title function_ invoke__">zip_entry_name</span></span><span>(</span><span><span class="hljs-variable">$zip_entry</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"正在读取document: <span class="hljs-subst">$entry_name</span></span></span><span>\n";
</span><span><span class="hljs-comment">// Obtenez la taille de l'entrée</span></span><span>
</span><span><span class="hljs-variable">$entry_size</span></span><span> = </span><span><span class="hljs-title function_ invoke__">zip_entry_filesize</span></span><span>(</span><span><span class="hljs-variable">$zip_entry</span></span><span>);
</span><span><span class="hljs-comment">// 读取document内容</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">zip_entry_open</span></span><span>(</span><span><span class="hljs-variable">$zip</span></span><span>, </span><span><span class="hljs-variable">$zip_entry</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>)) {
</span><span><span class="hljs-comment">// 将document内容读取到一个变量中</span></span><span>
</span><span><span class="hljs-variable">$file_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">zip_entry_read</span></span><span>(</span><span><span class="hljs-variable">$zip_entry</span></span><span>, </span><span><span class="hljs-variable">$entry_size</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"document内容: \n<span class="hljs-subst">$file_content</span></span></span><span>\n";
</span><span><span class="hljs-comment">// Fermer l'entrée</span></span><span>
</span><span><span class="hljs-title function_ invoke__">zip_entry_close</span></span><span>(</span><span><span class="hljs-variable">$zip_entry</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"无法Ouvrir条目 <span class="hljs-subst">$entry_name</span></span></span><span>\n";
}
}
</span><span><span class="hljs-comment">// fermetureZIPdocument</span></span><span>
</span><span><span class="hljs-title function_ invoke__">zip_close</span></span><span>(</span><span><span class="hljs-variable">$zip</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"无法OuvrirZIPdocument\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Ouvrez le fichier zip: zip_open est utilisé pour ouvrir le fichier zip et renvoyer une poignée de ressources. Si l'ouverture échoue, revenez faux .
Lire les entrées: zip_read est utilisé pour lire les ressources d'entrée à partir de fichiers ZIP. Chaque fois que Zip_read est appelé, il renvoie la ressource pour la prochaine entrée.
Obtenez le nom de l'entrée: utilisez ZIP_ENTRY_NAME pour obtenir le nom de l'entrée actuelle (c'est-à-dire le nom de fichier) et le publier.
Lisez le contenu d'entrée: ouvrez l'entrée dans la fonction ZIP_ENTRY_OPEN et spécifiez le mode de lecture ( R signifie Reading). Utilisez ensuite zip_entry_read pour lire le contenu de l'entrée. Le contenu de lecture peut être traité directement, comme l'impression ou l'enregistrement dans un fichier.
Entrée de fermeture: zip_entry_close est utilisé pour fermer et libérer les ressources pertinentes.
Fermez le fichier zip: après avoir terminé le traitement du fichier zip, utilisez ZIP_CLOSE pour fermer le fichier zip et libérer les ressources.
Le contenu lu par zip_entry_read est lu par Byte Stream, vous devez donc vous assurer que le paramètre de longueur $ entrant est raisonnable. Si la lecture du contenu est relativement grande, il est préférable de le lire par lots.
Lorsque vous utilisez un fichier zip plus grand, assurez-vous qu'aucun débordement de mémoire ne se produit pendant le traitement. Si vous avez besoin de lire un grand nombre de fichiers, il est recommandé de les traiter étape par étape pour éviter de lire trop de contenu en même temps.
zip_entry_name et zip_entry_read sont deux fonctions très pratiques. Ils sont utilisés en combinaison pour nous permettre de lire facilement le nom d'entrée et le contenu spécifique dans le fichier zip. Lors du traitement des packages compressés, ces deux fonctions fournissent des méthodes de fonctionnement de bas niveau, ce qui nous permet de lire de manière flexible le contenu des fichiers en fonction des besoins réels.