Dans PHP, lors du traitement des fichiers ZIP, la fonction ZIP_READ peut être utilisée pour lire chaque entrée de fichier dans le fichier ZIP. Grâce à cette fonction, nous pouvons lire le contenu dans le fichier zip un par un et traiter temporairement le contenu de lecture, tels que les opérations de chiffrement ou de cache. Cet article introduira en détail comment implémenter ces fonctions en combinaison avec la fonction zip_read .
Avant d'utiliser la fonction zip_read , vous devez vous assurer que PHP a installé et activé l'extension ZIP . Vous pouvez le vérifier par:
<?php
if (class_exists('ZipArchive')) {
echo "ZipExtension activée";
} else {
echo "Veuillez activerZipÉtendu";
}
?>
La fonction zip_read est utilisée pour lire la prochaine entrée dans une ressource ZIP. En conjonction avec ZIP_OPEN et ZIP_ENTRY_READ , vous pouvez traverser tous les fichiers dans le fichier ZIP.
Les exemples d'utilisation typiques sont les suivants:
<?php
$zip = zip_open('http://m66.net/path/to/file.zip');
if (is_resource($zip)) {
while ($entry = zip_read($zip)) {
$name = zip_entry_name($entry);
zip_entry_open($zip, $entry);
$content = zip_entry_read($entry, zip_entry_filesize($entry));
zip_entry_close($entry);
// C'est bon ici$contentEffectuer le traitement,Par exemple, cryptage ou cache
}
zip_close($zip);
}
?>
Supposons que nous voulons effectuer un chiffrement AES simple sur ce que nous lisons, l'exemple de code est le suivant:
<?php
$cacheDir = '/tmp/zip_cache/';
if (!is_dir($cacheDir)) {
mkdir($cacheDir, 0755, true);
}
$zip = zip_open('http://m66.net/path/to/file.zip');
if (is_resource($zip)) {
while ($entry = zip_read($zip)) {
$name = zip_entry_name($entry);
$cacheFile = $cacheDir . md5($name) . '.cache';
if (file_exists($cacheFile)) {
$content = file_get_contents($cacheFile);
} else {
zip_entry_open($zip, $entry);
$content = zip_entry_read($entry, zip_entry_filesize($entry));
zip_entry_close($entry);
file_put_contents($cacheFile, $content);
}
// ici$contentC'est-à-dire le contenu mis en cache,Peut continuer le traitement
}
zip_close($zip);
}
?>