Verarbeitung von Zip -Dateien in PHP, insbesondere das Extrahieren bestimmter Dateien Arten (z. B. .txt -Textdateien), kann über die ziparchive -Klasse oder die zugrunde liegende Funktion zip_read erfolgen. Obwohl Ziparchive moderner und einfacher ist, ist Zip_read in einigen älteren Versionen oder besonderen Szenarien immer noch wertvoll. In diesem Artikel wird vorgestellt, wie Sie Zip_read verwenden, um alle .txt -Dateiinhalte in ZIP -Dateien zu lesen.
Stellen Sie zunächst sicher, dass die ZIP -Erweiterung in Ihrer PHP -Umgebung aktiviert ist. Überprüfen Sie, ob die folgende Zeile in php.ini enthalten ist:
extension=zip
Sie können auch überprüfen, indem Sie den folgenden PHP -Code ausführen:
<?php
if (!function_exists('zip_open')) {
die("ZIP Erweiterung nicht aktiviert!");
}
?>
Hier ist ein vollständiges Beispiel, das zeigt, wie Sie eine ZIP -Datei öffnen, alle darin enthaltenen Einträge durchführen und nur den Inhalt der Datei mit der Erweiterung .txt lesen.
<?php
$zipFile = '/path/to/archive.zip'; // Durch den tatsächlichen Pfad ersetzen
$zip = zip_open($zipFile);
if (is_resource($zip)) {
while ($entry = zip_read($zip)) {
$fileName = zip_entry_name($entry);
// Nur Prozess .txt dokumentieren
if (pathinfo($fileName, PATHINFO_EXTENSION) === 'txt') {
if (zip_entry_open($zip, $entry, 'r')) {
echo "读取dokumentieren: $fileName\n";
$contents = zip_entry_read($entry, zip_entry_filesize($entry));
echo "Der Inhalt ist wie folgt:\n$contents\n\n";
zip_entry_close($entry);
}
}
}
zip_close($zip);
} else {
echo "Nicht öffnen können ZIP dokumentieren。\n";
}
?>
Pfadüberprüfung : Der von zip_entry_name () zurückgegebene Dateipfad kann eine Verzeichnisstruktur oder einen Versuch enthalten, Pfad -Traversal durchzuführen. Stellen Sie sicher, dass Sie die Sicherheit überprüfen, wenn Sie sie verwenden.
Lesen Sie die Lesegröße ein : Einige .txt -Dateien können sehr groß sein und sollten eingeschränkt werden, wenn zip_entry_read (), um den Speicherüberlauf zu verhindern.
Fehlerbehandlung : Der obige Code enthält keine vollständige Fehlerbehandlungslogik. Protokolle und Ausnahmebehandlungsmechanismen sollten nach bestimmten Umständen in der Produktionsumgebung hinzugefügt werden.
Angenommen, Sie entwickeln eine Online -Batch -Verarbeitungsplattform, auf der Benutzer ZIP -Pakete mit mehreren .txt -Dateien hochladen und statistische oder formatische Konvertierung von Inhalten durchführen können. Durch die obige Methode kann der Textinhalt einfach extrahiert werden und die nachfolgende Verarbeitungslogik kann aufgerufen werden.
Sie können diese Logik in das Skript zur Upload -Verarbeitung integrieren, z. B.:
$uploadedZip = $_FILES['file']['tmp_name'];
// 对上传dokumentieren进行检查后调用读取函数
processTxtFilesFromZip($uploadedZip);
Kombinieren Sie die Funktionen für Upload -Formular- und Sicherheitsüberprüfungsfunktionen und kann eine einfache Plattform für die Verarbeitung von Zip -Dateien erstellt werden. Besuchen Sie https://m66.net/tools/zip-reader, um mehr tatsächliche Demonstrationen und Quellcodereferenzen für solche Tools zu erhalten.
Obwohl die Schnittstelle ZIP_READ etwas umständlich als Ziparchive ist, ist sie bei der Ausführung feiner Vorgänge in ZIP -Dateien immer noch von Referenzwert. Durch die vernünftige Kombination von Zip_read und zip_entry_* Serienfunktionen können Sie bestimmte Arten von Dateien wie .txt für verschiedene Automatisierungsverarbeitungs- und Hintergrund -Batch -Aufgaben flexibel lesen.