Die Handhabung von Zip -komprimierten Dateien in PHP ist eine gemeinsame Aufgabe, insbesondere bei der Behandlung von Upload -Dateien oder automatischen Archiven. Die ZIP -Erweiterung von PHP bietet einen vollständigen API -Satz für die Manipulation von Zip -Dateien, wobei Zip_read () eine Schlüsselfunktion ist, mit der Einträge in ZIP -Dateien durchlaufen werden. In diesem Artikel wird gezeigt, wie die Funktion zip_read () verwendet wird, um jeden Dateiinhalt in einer ZIP -Datei einzeln zu lesen und zu extrahieren.
Stellen Sie vor Beginn sicher, dass Ihre PHP -Umgebung eine Zip -Erweiterung aktiviert hat. Sie können prüfen, ob es aktiviert ist durch:
<?php
phpinfo();
?>
Suchen Sie auf der Seite nach Reißverschluss , wenn es existiert, ist es aktiviert. Wenn nicht, installieren Sie und aktivieren Sie die Erweiterung gemäß Ihrem Betriebssystem.
Die grundlegenden Schritte bei der Verwendung von ZIP_READ () sind wie folgt:
Verwenden Sie Zip_open () , um die ZIP -Datei zu öffnen.
Verwenden Sie ZIP_READ (), um jeden Eintrag zu durchqueren.
Verwenden Sie ZIP_ENTRY_NAME (), um den Eintragsnamen zu erhalten.
Verwenden Sie zip_entry_open () und zip_entry_read (), um den Inhaltsinhalt zu lesen.
Optional: Schreiben Sie den Inhalt des Lesens in die Datei, um den Extraktionsvorgang durchzuführen.
Hier ist ein vollständiges Beispiel für das Lesen und Extrahieren jeder Datei in der ZIP -Datei einzeln in das angegebene Verzeichnis:
<?php
$zipFile = 'archive.zip'; // Angenommen, die Datei befindet sich im aktuellen Verzeichnis
$extractTo = 'extracted_files/';
// Stellen Sie sicher, dass das Zielverzeichnis existiert
if (!is_dir($extractTo)) {
mkdir($extractTo, 0755, true);
}
// Offen ZIP dokumentieren
$zip = zip_open($zipFile);
if (is_resource($zip)) {
while ($zipEntry = zip_read($zip)) {
$entryName = zip_entry_name($zipEntry);
$entryPath = $extractTo . $entryName;
// Verzeichniseinträge ignorieren,仅处理dokumentieren
if (substr($entryName, -1) === '/') {
continue;
}
// 尝试Offen条目
if (zip_entry_open($zip, $zipEntry, "r")) {
$entryContent = zip_entry_read($zipEntry, zip_entry_filesize($zipEntry));
// Stellen Sie sicher, dass die Verzeichnisstruktur vorliegt
$dir = dirname($entryPath);
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
// 写入到dokumentieren
file_put_contents($entryPath, $entryContent);
// Optional:输出当前处理的dokumentieren
echo "已提取dokumentieren: $entryName<br>";
zip_entry_close($zipEntry);
}
}
zip_close($zip);
echo "ZIP dokumentieren处理完成。";
} else {
echo "无法Offen ZIP dokumentieren。";
}
?>
ZIP_READ () liest jeweils einen Eintrag und muss in der Schleife mehrmals aufgerufen werden, um alle Einträge zu lesen.
Verwenden Sie ZIP_ENTRY_FILESIZE (), um die Dateigröße zum Lesen des vollständigen Inhalts zu erhalten.
Sie müssen zip_entry_open () verwenden, um den Inhalt eines Eintrags zu lesen.
Wenn in der ZIP -Datei mehrere Verzeichnisschichten vorhanden sind, stellen Sie sicher, dass die Verzeichnisstruktur vor der Extraktion vorhanden ist.
Online-Dokument Dekompressionsverarbeitung : Dekomprimiert automatisch in das serverspezifische Verzeichnis nach dem Hochladen des komprimierten Pakets.
Batch -Bildverarbeitung : Entpacken Sie die Bilder in der vom Benutzer hochgeladenen ZIP -Datei und speichern Sie sie für die nachfolgende Verarbeitung im / Uploads / Verzeichnis.
Inhaltssicherung und Wiederherstellung : Das System packt automatisch die Datensicherung und unterstützt die Extraktion und Wiederherstellung von Datei-by-Dateien.