Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Komprimierung und Archivierung – Zip

PHP-Komprimierung und Archivierung – Zip

伊谢尔伦
伊谢尔伦Original
2016-11-22 09:42:211382Durchsuche

Mit dieser Erweiterung können Sie ZIP-Archive und die darin enthaltenen Dateien transparent lesen und schreiben.

Um diese Funktionen nutzen zu können, müssen Sie nach PHP5.2 beim Kompilieren von PHP die Konfigurationsoption --enable-zip verwenden, um Zip-Unterstützung bereitzustellen.

Beispiel #1 Erstellen Sie ein Zip-Archiv

<?php
    $zip = new ZipArchive();
    $filename = "./test112.zip";
    if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
        exit("cannot open <$filename>\n");
    }
    $zip->addFromString("testfilephp.txt" . time(), 
        "#1 This is a test string added as testfilephp.txt.\n");
    $zip->addFromString("testfilephp2.txt" . time(), 
        "#2 This is a test string added as testfilephp2.txt.\n");
    $zip->addFile($thisdir . "/too.php","/testfromfile.php");
    echo "numfiles: " . $zip->numFiles . "\n";
    echo "status:" . $zip->status . "\n";
    $zip->close();
?>

Beispiel #2 Dokumentdetails und -liste ausgeben

<?php
    $za = new ZipArchive();
    $za->open(&#39;test_with_comment.zip&#39;);
    print_r($za);
    var_dump($za);
    echo "numFiles: " . $za->numFiles . "\n";
    echo "status: " . $za->status . "\n";
    echo "statusSys: " . $za->statusSys . "\n";
    echo "filename: " . $za->filename . "\n";
    echo "comment: " . $za->comment . "\n";
    for ($i=0; $i<$za->numFiles;$i++) {
        echo "index: $i\n";
        print_r($za->statIndex($i));
    }
    echo "numFile:" . $za->numFiles . "\n";
?>

Beispiel #3 Zip-Stream-Kapselung, Lesen einer OpenOffice-Datei Metainformationen

<?php
    $reader = new XMLReader();
    $reader->open(&#39;zip://&#39; . dirname(__FILE__) . &#39;/test.odt#meta.xml&#39;);
    $odt_meta = array();
    while ($reader->read()) {
        if ($reader->nodeType == XMLREADER::ELEMENT) {
            $elm = $reader->name;
        } else {
            if ($reader->nodeType == XMLREADER::END_ELEMENT && $reader->name == &#39;office:meta&#39;) {
                break;
            }
            if (!trim($reader->value)) {
                continue;
            }
            $odt_meta[$elm] = $reader->value;
        }
    }
    print_r($odt_meta);
?>

In diesem Beispiel wird die alte API (PHP 4) verwendet, die ein ZIP-Dateiarchiv öffnet, jede Datei im Archiv liest und den Dateiinhalt ausgibt. Die in diesem Beispiel verwendete Datei test2.zip ist eine der Testdateien in der ZZIPlib-Quelldistribution.

Beispiel Nr. 4 Zip-Verwendungsbeispiel

<?php
    $zip = zip_open("/tmp/test2.zip");
    if ($zip) {
        while ($zip_entry = zip_read($zip)) {
            echo "Name: " . zip_entry_name($zip_entry) . "\n";
            echo "Actual Filesize: " . zip_entry_filesize($zip_entry) . "\n";
            echo "Compressed Size: " . zip_entry_compressedsize($zip_entry) . "\n";
            echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";
            if (zip_entry_open($zip, $zip_entry, "r")) {
              echo "File Contents:\n";
              $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
              echo "$buf\n";
              zip_entry_close($zip_entry);
            }
            echo "\n";
        }
        zip_close($zip);
    }
?>

ZipArchive-Klasse

ZipArchive::addEmptyDir – Ein neues Verzeichnis hinzufügen

ZipArchive::addFile – Fügt hinzu eine Datei aus dem angegebenen Pfad zu einem ZIP-Archiv hinzufügen

ZipArchive::addFromString – Eine Datei mithilfe ihres Inhalts zu einem ZIP-Archiv hinzufügen

ZipArchive::addGlob – Dateien aus einem Verzeichnis nach Glob-Muster hinzufügen

ZipArchive::addPattern – Dateien aus einem Verzeichnis nach PCRE-Muster hinzufügen

ZipArchive::close – Schließen Sie das aktive Archiv (geöffnet oder neu erstellt)

ZipArchive::deleteIndex – Löschen Sie einen Eintrag im Archiv mithilfe seines Index

ZipArchive::deleteName – Löschen Sie einen Eintrag im Archiv mithilfe seines Namens

ZipArchive::extractTo – Extrahieren Sie den Archivinhalt

ZipArchive::getArchiveComment – ​​Gibt den Kommentar des Zip-Archivs zurück

ZipArchive::getCommentIndex – Gibt den Kommentar eines Eintrags unter Verwendung des Eintragsindex zurück

ZipArchive::getCommentName – Gibt den Kommentar eines Eintrags unter Verwendung zurück der Eintragsname

ZipArchive::getFromIndex — Gibt den Eintragsinhalt unter Verwendung seines Index zurück

ZipArchive::getFromName — Gibt den Eintragsinhalt unter Verwendung seines Namens zurück

ZipArchive::getNameIndex — Gibt den Namen eines Eintrags mithilfe seines Index zurück

ZipArchive::getStatusString – Gibt die Statusfehlermeldung, System- und/oder ZIP-Nachrichten zurück

ZipArchive::getStream – Ruft einen Dateihandler für den Eintrag ab definiert durch seinen Namen (schreibgeschützt).

ZipArchive::locateName – Gibt den Index des Eintrags im Archiv zurück

ZipArchive::open – Öffnen eines ZIP-Dateiarchivs

ZipArchive::renameIndex – Benennt einen durch seinen Index definierten Eintrag um

ZipArchive::renameName – Benennt einen durch seinen Namen definierten Eintrag um

ZipArchive::setArchiveComment – ​​Legt den Kommentar eines ZIP-Archivs fest

ZipArchive::setCommentIndex – Setzt den Kommentar eines durch seinen Index definierten Eintrags

ZipArchive::setCommentName – Setzt den Kommentar eines durch seinen Namen definierten Eintrags

ZipArchive:: statIndex – Ruft die Details eines durch seinen Index definierten Eintrags ab.

ZipArchive::statName – Ruft die Details eines durch seinen Namen definierten Eintrags ab.

ZipArchive::unchangeAll – Macht alle vorgenommenen Änderungen rückgängig im Archiv

ZipArchive::unchangeArchive – Macht alle im Archiv vorgenommenen globalen Änderungen rückgängig.

ZipArchive::unchangeIndex – Macht alle an einem Eintrag am angegebenen Index vorgenommenen Änderungen rückgängig

ZipArchive::unchangeName – Alle an einem Eintrag mit dem angegebenen Namen vorgenommenen Änderungen rückgängig machen.

Verwandte Funktionen

zip_close – Ein ZIP-Dateiarchiv schließen

zip_entry_close – Ein Verzeichnis schließen Eintrag

zip_entry_compressedsize – Rufen Sie die komprimierte Größe eines Verzeichniseintrags ab

zip_entry_name – Rufen Sie den Namen eines Verzeichniseintrags ab

zip_entry_open – Öffnen Sie einen Verzeichniseintrag zum Lesen

zip_entry_read – Aus einem geöffneten Verzeichniseintrag lesen

zip_open – Ein ZIP-Dateiarchiv öffnen

zip_read – Nächsten Eintrag in einem ZIP-Dateiarchiv lesen

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn