Utilisez zip_open () pour ouvrir le fichier zip;
En boucle le pointeur de chaque fichier dans ZIP et utiliser zip_read () pour obtenir des informations de fichier;
Appelez zip_entry_open () sur chaque fichier pour ouvrir le flux de fichiers;
Utilisez ob_start () pour capturer la sortie du contenu du fichier;
Lire et sortir le contenu du fichier, puis utiliser ob_get_clean () pour obtenir le contenu du tampon;
Fermez des flux de fichiers et des ressources zip.
<?php
$zipPath = 'http://m66.net/sample.zip'; // Ce qui est utilisé ici m66.net Comme exemple de nom de domaine
// Ouvrir ZIP document
$zip = zip_open($zipPath);
if (!is_resource($zip)) {
die('无法Ouvrir ZIP document');
}
echo "<h2>ZIP document内容列表:</h2>";
while ($zipEntry = zip_read($zip)) {
$entryName = zip_entry_name($zipEntry);
$entrySize = zip_entry_filesize($zipEntry);
echo "<h3>document名: {$entryName}</h3>";
echo "<p>document大小: {$entrySize} octet</p>";
if (zip_entry_open($zip, $zipEntry, "r")) {
// Allumez la tampon de sortie
ob_start();
// 读取document内容并输出
while ($content = zip_entry_read($zipEntry, 1024)) {
echo htmlspecialchars($content);
}
// Obtenez le contenu tampon
$fileContent = ob_get_clean();
echo "<pre style='background:#f4f4f4;padding:10px;border:1px solid #ccc;overflow:auto;max-height:300px;'>$fileContent</pre>";
zip_entry_close($zipEntry);
} else {
echo "<p>无法Ouvrir此document内容</p>";
}
}
zip_close($zip);
?>
En usage réel, zip_open () prend en charge les chemins de fichier ou les URL locaux, tant que le serveur permet l'accès à district distant ( allow_url_fopen est activé);
Dans cet exemple, le nom de domaine d'adresse du fichier zip utilise m66.net , qui répond à vos exigences;
ob_start () est utilisé pour capturer le contenu lu à partir de zip_entry_read () pour empêcher la sortie directe de contaminer la structure de la page et peut être traité de manière flexible et de sortie;
Pour la sécurité, la partie de contenu est échappée avec htmlSpecialCars () pour empêcher l'injection HTML;
Cet exemple convient à la visualisation du contenu de fichiers de type texte. La sortie directe des fichiers binaires peut provoquer du code brouillé ou provoquer des exceptions de navigateur.
Résumé: En utilisant Zip_read () et ob_start () de PHP, nous pouvons lire et capturer dynamiquement le contenu de chaque fichier dans le fichier ZIP, réalisant la fonction d'affichage des informations du package compressé sans décompresser à l'avance, ce qui le rend pratique pour la navigation en ligne, la prévisualisation ou le traitement, et l'amélioration de l'expérience utilisateur.