PhpZip
ist eine PHP-Bibliothek für die erweiterte Arbeit mit ZIP-Archiven.
Russische Dokumentation
Version | PHP | Dokumentation |
---|---|---|
^4.0 (Master) | ^7,4|^8,0 | aktuell |
^3.0 | ^5,5|^7,0 | Dokumente v3.3 |
PhpZipZipFile
php-zip
und Klasse ZipArchive
erforderlich).php-bz2
.ZIP64
(Dateigröße beträgt mehr als 4 GB oder die Anzahl der Einträge im Archiv beträgt mehr als 65535).Aufmerksamkeit!
Für 32-Bit-Systeme wird die Verschlüsselungsmethode
Traditional PKWARE Encryption (ZipCrypto)
derzeit nicht unterstützt. Verwenden Sie nach Möglichkeit die VerschlüsselungsmethodeWinZIP AES Encryption
.
Traditional PKWARE Encryption (ZipCrypto)
und WinZIP AES Encryption
.PHP
>= 7.4 oder PHP
>= 8.0 (vorzugsweise 64-Bit).bzip2
für BZIP2-Komprimierung.openssl
für WinZip Aes Encryption
. composer require nelexa/zip
Neueste stabile Version:
// create new archive
$ zipFile = new PhpZip ZipFile ();
try {
$ zipFile
-> addFromString ( ' zip/entry/filename ' , ' Is file content ' ) // add an entry from the string
-> addFile ( ' /path/to/file ' , ' data/tofile ' ) // add an entry from the file
-> addDir ( __DIR__ , ' to/path/ ' ) // add files from the directory
-> saveAsFile ( $ outputFilename ) // save the archive to a file
-> close (); // close archive
// open archive, extract, add files, set password and output to browser.
$ zipFile
-> openFile ( $ outputFilename ) // open archive from file
-> extractTo ( $ outputDirExtract ) // extract files to the specified directory
-> deleteFromRegex ( ' ~^.~ ' ) // delete all hidden (Unix) files
-> addFromString ( ' dir/file.txt ' , ' Test file ' ) // add a new entry from the string
-> setPassword ( ' password ' ) // set password for all entries
-> outputAsAttachment ( ' library.jar ' ); // output to the browser without saving to a file
}
catch ( PhpZip Exception ZipException $ e ){
// handle exception
}
finally {
$ zipFile -> close ();
}
Weitere Beispiele finden Sie im Ordner tests/
.
Zip-Eintrag – Datei oder Ordner in einem ZIP-Archiv. Jeder Eintrag im Archiv hat bestimmte Eigenschaften, zum Beispiel: Dateiname, Komprimierungsmethode, Verschlüsselungsmethode, Dateigröße vor der Komprimierung, Dateigröße nach der Komprimierung, CRC32 und andere.
PhpZipZipFile
SplFileInfo
zu einem ZIP-Archiv hinzu.SymfonyComponentFinderFinder
zu einem ZIP-Archiv hinzu.Initialisiert das ZIP-Archiv
$ zipFile = new PhpZip ZipFile ();
Öffnet ein Zip-Archiv aus einer Datei.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> openFile ( ' file.zip ' );
Öffnet ein Zip-Archiv aus einer Zeichenfolge.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> openFromString ( $ stringContents );
Öffnet ein Zip-Archiv aus dem Stream.
$ stream = fopen ( ' file.zip ' , ' rb ' );
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> openFromStream ( $ stream );
Gibt die Anzahl der Einträge im Archiv zurück.
$ zipFile = new PhpZip ZipFile ();
$ count = count ( $ zipFile );
// or
$ count = $ zipFile -> count ();
Gibt eine Liste der Archivdateien zurück.
$ zipFile = new PhpZip ZipFile ();
$ listFiles = $ zipFile -> getListFiles ();
// example array contents:
// array (
// 0 => 'info.txt',
// 1 => 'path/to/file.jpg',
// 2 => 'another path/',
// 3 => '0',
// )
Gibt den Inhalt des Eintrags unter Verwendung seines Namens zurück.
// $entryName = 'path/to/example-entry-name.txt';
$ zipFile = new PhpZip ZipFile ();
$ contents = $ zipFile [ $ entryName ];
// or
$ contents = $ zipFile -> getEntryContents ( $ entryName );
Prüft, ob ein Eintrag im Archiv vorhanden ist.
// $entryName = 'path/to/example-entry-name.txt';
$ zipFile = new PhpZip ZipFile ();
$ hasEntry = isset ( $ zipFile [ $ entryName ]);
// or
$ hasEntry = $ zipFile -> hasEntry ( $ entryName );
Überprüft, ob der Eintrag im Archiv ein Verzeichnis ist.
// $entryName = 'path/to/';
$ zipFile = new PhpZip ZipFile ();
$ isDirectory = $ zipFile -> isDirectory ( $ entryName );
Extrahieren Sie den Archivinhalt. Das Verzeichnis muss vorhanden sein.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> extractTo ( $ directory );
Extrahieren Sie einige Dateien in das Verzeichnis. Das Verzeichnis muss vorhanden sein.
// $toDirectory = '/tmp';
$ extractOnlyFiles = [
' filename1 ' ,
' filename2 ' ,
' dir/dir/dir/ '
];
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> extractTo ( $ toDirectory , $ extractOnlyFiles );
ZipFile
ist ein Iterator. Kann alle Einträge in der foreach
Schleife iterieren.
foreach ( $ zipFile as $ entryName => $ contents ){
echo " Filename: $ entryName " . PHP_EOL ;
echo " Contents: $ contents " . PHP_EOL ;
echo ' ----------------------------- ' . PHP_EOL ;
}
Kann den Iterator
durchlaufen.
$ iterator = new ArrayIterator ( $ zipFile );
while ( $ iterator -> valid ())
{
$ entryName = $ iterator -> key ();
$ contents = $ iterator -> current ();
echo " Filename: $ entryName " . PHP_EOL ;
echo " Contents: $ contents " . PHP_EOL ;
echo ' ----------------------------- ' . PHP_EOL ;
$ iterator -> next ();
}
Gibt den Kommentar zum Zip-Archiv zurück.
$ zipFile = new PhpZip ZipFile ();
$ commentArchive = $ zipFile -> getArchiveComment ();
Gibt den Kommentar eines Eintrags unter Verwendung des Eintragsnamens zurück.
$ zipFile = new PhpZip ZipFile ();
$ commentEntry = $ zipFile -> getEntryComment ( $ entryName );
Bei allen Methoden zum Hinzufügen von Einträgen zu einem ZIP-Archiv können Sie eine Methode zum Komprimieren des Inhalts angeben.
Folgende Komprimierungsmethoden stehen zur Verfügung:
PhpZipConstantsZipCompressionMethod::STORED
– keine KomprimierungPhpZipConstantsZipCompressionMethod::DEFLATED
– Deflate-KomprimierungPhpZipConstantsZipCompressionMethod::BZIP2
– Bzip2-Komprimierung mit der Erweiterung ext-bz2
Fügt eine Datei aus dem angegebenen Pfad zu einem ZIP-Archiv hinzu.
$ zipFile = new PhpZip ZipFile ();
// $file = '...../file.ext';
// $entryName = 'file2.ext'
$ zipFile -> addFile ( $ file );
// you can specify the name of the entry in the archive (if null, then the last component from the file name is used)
$ zipFile -> addFile ( $ file , $ entryName );
// you can specify a compression method
$ zipFile -> addFile ( $ file , $ entryName , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFile ( $ file , $ entryName , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFile ( $ file , $ entryName , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Fügt eine SplFileInfo
zu einem ZIP-Archiv hinzu.
// $file = '...../file.ext';
// $entryName = 'file2.ext'
$ zipFile = new PhpZip ZipFile ();
$ splFile = new SplFileInfo ( ' README.md ' );
$ zipFile -> addSplFile ( $ splFile );
$ zipFile -> addSplFile ( $ splFile , $ entryName );
// or
$ zipFile [ $ entryName ] = new SplFileInfo ( $ file );
// set compression method
$ zipFile -> addSplFile ( $ splFile , $ entryName , $ options = [
PhpZip Constants ZipOptions:: COMPRESSION_METHOD => PhpZip Constants ZipCompressionMethod:: DEFLATED ,
]);
Fügt Dateien aus SymfonyComponentFinderFinder
zu einem ZIP-Archiv hinzu.
$ finder = new Symfony Component Finder Finder ();
$ finder
-> files ()
-> name ( ' *.{jpg,jpeg,gif,png} ' )
-> name ( ' /^[0-9a-f]./ ' )
-> contains ( ' /lorems+ipsum$/i ' )
-> in ( ' path ' );
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addFromFinder ( $ finder , $ options = [
PhpZip Constants ZipOptions:: COMPRESSION_METHOD => PhpZip Constants ZipCompressionMethod:: DEFLATED ,
PhpZip Constants ZipOptions:: MODIFIED_TIME => new DateTimeImmutable ( ' -1 day 5 min ' )
]);
Fügt eine Datei mithilfe ihres Inhalts zu einem ZIP-Archiv hinzu.
$ zipFile = new PhpZip ZipFile ();
$ zipFile [ $ entryName ] = $ contents ;
// or
$ zipFile -> addFromString ( $ entryName , $ contents );
// you can specify a compression method
$ zipFile -> addFromString ( $ entryName , $ contents , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFromString ( $ entryName , $ contents , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFromString ( $ entryName , $ contents , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Fügt einen Eintrag aus dem Stream zum ZIP-Archiv hinzu.
$ zipFile = new PhpZip ZipFile ();
// $stream = fopen(..., 'rb');
$ zipFile -> addFromStream ( $ stream , $ entryName );
// or
$ zipFile [ $ entryName ] = $ stream ;
// you can specify a compression method
$ zipFile -> addFromStream ( $ stream , $ entryName , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFromStream ( $ stream , $ entryName , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFromStream ( $ stream , $ entryName , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Fügen Sie ein neues Verzeichnis hinzu.
$ zipFile = new PhpZip ZipFile ();
// $path = "path/to/";
$ zipFile -> addEmptyDir ( $ path );
// or
$ zipFile [ $ path ] = null ;
Fügt alle Einträge aus einem Array hinzu.
$ entries = [
' file.txt ' => ' file contents ' , // add an entry from the string contents
' empty dir/ ' => null , // add empty directory
' path/to/file.jpg ' => fopen ( ' ..../filename ' , ' rb ' ), // add an entry from the stream
' path/to/file.dat ' => new SplFileInfo ( ' ..../filename ' ), // add an entry from the file
];
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addAll ( $ entries );
Fügt dem Archiv Dateien aus dem Verzeichnis im angegebenen Pfad ohne Unterverzeichnisse hinzu.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addDir ( $ dirName );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addDir ( $ dirName , $ localPath );
// you can specify a compression method
$ zipFile -> addDir ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addDir ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addDir ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Fügt dem Archiv Dateien aus dem Verzeichnis im angegebenen Pfad mit Unterverzeichnissen hinzu.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addDirRecursive ( $ dirName );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addDirRecursive ( $ dirName , $ localPath );
// you can specify a compression method
$ zipFile -> addDirRecursive ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addDirRecursive ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addDirRecursive ( $ dirName , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Fügt Dateien aus dem Iterator von Verzeichnissen hinzu.
// $directoryIterator = new DirectoryIterator($dir); // without subdirectories
// $directoryIterator = new RecursiveDirectoryIterator($dir); // with subdirectories
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addFilesFromIterator ( $ directoryIterator );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addFilesFromIterator ( $ directoryIterator , $ localPath );
// or
$ zipFile [ $ localPath ] = $ directoryIterator ;
// you can specify a compression method
$ zipFile -> addFilesFromIterator ( $ directoryIterator , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFilesFromIterator ( $ directoryIterator , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFilesFromIterator ( $ directoryIterator , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Beispiel mit einigen Dateien, die Folgendes ignorieren:
$ ignoreFiles = [
' file_ignore.txt ' ,
' dir_ignore/sub dir ignore/ '
];
// $directoryIterator = new DirectoryIterator($dir); // without subdirectories
// $directoryIterator = new RecursiveDirectoryIterator($dir); // with subdirectories
// use PhpZipUtilIteratorIgnoreFilesFilterIterator for non-recursive search
$ zipFile = new PhpZip ZipFile ();
$ ignoreIterator = new PhpZip Util Iterator IgnoreFilesRecursiveFilterIterator (
$ directoryIterator ,
$ ignoreFiles
);
$ zipFile -> addFilesFromIterator ( $ ignoreIterator );
Fügt Dateien aus einem Verzeichnis nach Glob-Muster ohne Unterverzeichnisse hinzu.
$ globPattern = ' **.{jpg,jpeg,png,gif} ' ; // example glob pattern -> add all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addFilesFromGlob ( $ dir , $ globPattern );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addFilesFromGlob ( $ dir , $ globPattern , $ localPath );
// you can specify a compression method
$ zipFile -> addFilesFromGlob ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFilesFromGlob ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFilesFromGlob ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Fügt Dateien aus einem Verzeichnis nach Glob-Muster mit Unterverzeichnissen hinzu.
$ globPattern = ' **.{jpg,jpeg,png,gif} ' ; // example glob pattern -> add all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addFilesFromGlobRecursive ( $ dir , $ globPattern );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addFilesFromGlobRecursive ( $ dir , $ globPattern , $ localPath );
// you can specify a compression method
$ zipFile -> addFilesFromGlobRecursive ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFilesFromGlobRecursive ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFilesFromGlobRecursive ( $ dir , $ globPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Fügt Dateien aus einem Verzeichnis nach PCRE-Muster ohne Unterverzeichnisse hinzu.
$ regexPattern = ' /.(jpe?g|png|gif)$/si ' ; // example regex pattern -> add all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> addFilesFromRegex ( $ dir , $ regexPattern );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addFilesFromRegex ( $ dir , $ regexPattern , $ localPath );
// you can specify a compression method
$ zipFile -> addFilesFromRegex ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFilesFromRegex ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFilesFromRegex ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Fügt Dateien aus einem Verzeichnis nach PCRE-Muster mit Unterverzeichnissen hinzu.
$ regexPattern = ' /.(jpe?g|png|gif)$/si ' ; // example regex pattern -> add all .jpg, .jpeg, .png and .gif files
$ zipFile -> addFilesFromRegexRecursive ( $ dir , $ regexPattern );
// you can specify the path in the archive to which you want to put entries
$ localPath = ' to/path/ ' ;
$ zipFile -> addFilesFromRegexRecursive ( $ dir , $ regexPattern , $ localPath );
// you can specify a compression method
$ zipFile -> addFilesFromRegexRecursive ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: STORED ); // No compression
$ zipFile -> addFilesFromRegexRecursive ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: DEFLATED ); // Deflate compression
$ zipFile -> addFilesFromRegexRecursive ( $ dir , $ regexPattern , $ localPath , PhpZip Constants ZipCompressionMethod:: BZIP2 ); // BZIP2 compression
Löscht einen Eintrag im Archiv unter Verwendung seines Namens.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteFromName ( $ entryName );
Löscht Einträge im Archiv mithilfe des Glob-Musters.
$ globPattern = ' **.{jpg,jpeg,png,gif} ' ; // example glob pattern -> delete all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteFromGlob ( $ globPattern );
Löscht Einträge im Archiv mithilfe des PCRE-Musters.
$ regexPattern = ' /.(jpe?g|png|gif)$/si ' ; // example regex pattern -> delete all .jpg, .jpeg, .png and .gif files
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteFromRegex ( $ regexPattern );
Löscht alle Einträge im ZIP-Archiv.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> deleteAll ();
Benennt einen durch seinen Namen definierten Eintrag um.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> rename ( $ oldName , $ newName );
Legen Sie die Komprimierungsstufe für alle Dateien im Archiv fest.
Beachten Sie, dass diese Methode nicht für Einträge gilt, die nach der Ausführung dieser Methode hinzugefügt werden.
Standardmäßig ist die Komprimierungsstufe 5 ( PhpZipConstantsZipCompressionLevel::NORMAL
) oder die im Archiv für die Deflate-Komprimierung angegebene Komprimierungsstufe.
Der Wertebereich von 1 ( PhpZipConstantsZipCompressionLevel::SUPER_FAST
) bis 9 ( PhpZipConstantsZipCompressionLevel::MAXIMUM
) wird unterstützt. Je höher die Zahl, desto besser und länger ist die Komprimierung.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setCompressionLevel ( PhpZip Constants ZipCompressionLevel:: MAXIMUM );
Legt die Komprimierungsstufe für den Eintrag anhand seines Namens fest.
Der Wertebereich von 1 ( PhpZipConstantsZipCompressionLevel::SUPER_FAST
) bis 9 ( PhpZipConstantsZipCompressionLevel::MAXIMUM
) wird unterstützt. Je höher die Zahl, desto besser und länger ist die Komprimierung.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setCompressionLevelEntry ( $ entryName , PhpZip Constants ZipCompressionLevel:: FAST );
Legt die Komprimierungsmethode für den Eintrag anhand seines Namens fest.
Folgende Komprimierungsmethoden stehen zur Verfügung:
PhpZipConstantsZipCompressionMethod::STORED
– Keine KomprimierungPhpZipConstantsZipCompressionMethod::DEFLATED
– Deflate-KomprimierungPhpZipConstantsZipCompressionMethod::BZIP2
– Bzip2-Komprimierung mit der Erweiterung ext-bz2
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setCompressionMethodEntry ( $ entryName , PhpZip Constants ZipCompressionMethod:: DEFLATED );
Legen Sie den Kommentar eines ZIP-Archivs fest.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setArchiveComment ( $ commentArchive );
Legen Sie den Kommentar eines durch seinen Namen definierten Eintrags fest.
$ zipFile = new PhpZip ZipFile ();
$ zipFile -> setEntryComment ( $ entryName , $ comment );
Auswählen von Einträgen im Archiv, um Operationen an ihnen durchzuführen.
$ zipFile = new PhpZip ZipFile ();
$ matcher = $ zipFile -> matcher ();
Dateien einzeln aus dem Archiv auswählen:
$ matcher
-> add ( ' entry name ' )
-> add ( ' another entry ' );
Wählen Sie mehrere Dateien im Archiv aus:
$ matcher -> add ([
' entry name ' ,
' another entry name ' ,
' path/ '
]);
Auswählen von Dateien nach regulärem Ausdruck:
$ matcher -> match ( ' ~.jpe?g$~i ' );
Wählen Sie alle Dateien im Archiv aus:
$ matcher -> all ();
count() – ermittelt die Anzahl der ausgewählten Einträge:
$ count = count ( $ matcher );
// or
$ count = $ matcher -> count ();
getMatches() – gibt eine Liste ausgewählter Einträge zurück:
$ entries = $ matcher -> getMatches ();
// example array contents: ['entry name', 'another entry name'];
invoke() – eine aufrufbare Funktion für ausgewählte Einträge aufrufen:
// example
$ matcher -> invoke ( static function ( $ entryName ) use ( $ zipFile ) {
$ newName = preg_replace ( ' ~.(jpe?g)$~i ' , ' .no_optimize.$1 ' , $ entryName );
$ zipFile -> rename ( $ entryName , $ newName );
});
Funktionen zum Bearbeiten der ausgewählten Einträge:
$ matcher -> delete (); // remove selected entries from a ZIP archive
$ matcher -> setPassword ( $ password ); // sets a new password for the selected entries
$ matcher -> setPassword ( $ password , $ encryptionMethod ); // sets a new password and encryption method to selected entries
$ matcher -> setEncryptionMethod ( $ encryptionMethod ); // sets the encryption method to the selected entries
$ matcher -> disableEncryption (); // disables encryption for selected entries
Implementierte Unterstützung für Verschlüsselungsmethoden:
PhpZipConstantsZipEncryptionMethod::PKWARE
– Traditionelle PKWARE-Verschlüsselung (alt)PhpZipConstantsZipEncryptionMethod::WINZIP_AES_256
– WinZip AES-Verschlüsselung 256 Bit (empfohlen)PhpZipConstantsZipEncryptionMethod::WINZIP_AES_192
– WinZip AES-Verschlüsselung 192 BitPhpZipConstantsZipEncryptionMethod::WINZIP_AES_128
– WinZip AES-Verschlüsselung 128 Bit Legen Sie das Passwort für das geöffnete Archiv fest.
Für das Hinzufügen neuer Einträge oder das Löschen bestehender Einträge ist die Festlegung eines Passworts nicht erforderlich. Wenn Sie jedoch den Inhalt extrahieren oder die Methode/Komprimierungsstufe, die Verschlüsselungsmethode oder das Passwort ändern möchten, muss in diesem Fall das Passwort angegeben werden.
$ zipFile -> setReadPassword ( $ password );
Ruft ein Passwort zum Lesen eines durch seinen Namen definierten Eintrags ab.
$ zipFile -> setReadPasswordEntry ( $ entryName , $ password );
Legt ein neues Passwort für alle Dateien im Archiv fest.
Beachten Sie, dass diese Methode nicht für Einträge gilt, die nach der Ausführung dieser Methode hinzugefügt werden.
$ zipFile -> setPassword ( $ password );
Sie können die Verschlüsselungsmethode festlegen:
$ encryptionMethod = PhpZip Constants ZipEncryptionMethod:: WINZIP_AES_256 ;
$ zipFile -> setPassword ( $ password , $ encryptionMethod );
Legt ein neues Passwort für einen durch seinen Namen definierten Eintrag fest.
$ zipFile -> setPasswordEntry ( $ entryName , $ password );
Sie können die Verschlüsselungsmethode festlegen:
$ encryptionMethod = PhpZip Constants ZipEncryptionMethod:: WINZIP_AES_256 ;
$ zipFile -> setPasswordEntry ( $ entryName , $ password , $ encryptionMethod );
Deaktivieren Sie die Verschlüsselung für alle Einträge, die sich bereits im Archiv befinden.
Beachten Sie, dass diese Methode nicht für Einträge gilt, die nach der Ausführung dieser Methode hinzugefügt werden.
$ zipFile -> disableEncryption ();
Deaktivieren Sie die Verschlüsselung eines durch seinen Namen definierten Eintrags.
$ zipFile -> disableEncryptionEntry ( $ entryName );
Machen Sie alle im Archiv vorgenommenen Änderungen rückgängig.
$ zipFile -> unchangeAll ();
Machen Sie Änderungen am Archivkommentar rückgängig.
$ zipFile -> unchangeArchiveComment ();
Machen Sie Änderungen eines durch seinen Namen definierten Eintrags rückgängig.
$ zipFile -> unchangeEntry ( $ entryName );
Speichert das Archiv in einer Datei.
$ zipFile -> saveAsFile ( $ filename );
Schreibt das Archiv in den Stream.
// $fp = fopen($filename, 'w+b');
$ zipFile -> saveAsStream ( $ fp );
Gibt ein ZIP-Archiv als String aus.
$ rawZipArchiveBytes = $ zipFile -> outputAsString ();
Gibt ein ZIP-Archiv an den Browser aus.
$ zipFile -> outputAsAttachment ( $ outputFilename );
Sie können den Mime-Typ festlegen:
$ mimeType = ' application/zip ' ;
$ zipFile -> outputAsAttachment ( $ outputFilename , $ mimeType );
Gibt ein ZIP-Archiv als PSR-7-Antwort aus.
Die Ausgabemethode kann in jedem PSR-7-kompatiblen Framework verwendet werden.
// $response = ....; // instance PsrHttpMessageResponseInterface
$ zipFile -> outputAsPsr7Response ( $ response , $ outputFilename );
Sie können den Mime-Typ festlegen:
$ mimeType = ' application/zip ' ;
$ zipFile -> outputAsPsr7Response ( $ response , $ outputFilename , $ mimeType );
Gibt ein ZIP-Archiv als Symfony-Antwort aus.
Die Ausgabemethode kann im Symfony-Framework verwendet werden.
$ response = $ zipFile -> outputAsSymfonyResponse ( $ outputFilename );
Sie können den Mime-Typ festlegen:
$ mimeType = ' application/zip ' ;
$ response = $ zipFile -> outputAsSymfonyResponse ( $ outputFilename , $ mimeType );
Beispielanwendung im Symfony Controller:
<?php
namespace App Controller ;
use PhpZip ZipFile ;
use Symfony Component HttpFoundation Response ;
use Symfony Component Routing Annotation Route ;
class DownloadZipController
{
/**
* @Route("/downloads/{id}")
*
* @throws PhpZipExceptionZipException
*/
public function __invoke ( string $ id ): Response
{
$ zipFile = new ZipFile ();
$ zipFile [ ' file ' ] = ' contents ' ;
$ outputFilename = $ id . ' .zip ' ;
return $ zipFile -> outputAsSymfonyResponse ( $ outputFilename );
}
}
Speichern Sie die Änderungen und öffnen Sie das geänderte Archiv erneut.
$ zipFile -> rewrite ();
Schließen Sie das Archiv.
$ zipFile -> close ();
Installieren Sie die Abhängigkeiten für die Entwicklung:
composer install --dev
Führen Sie die Tests durch:
vendor/bin/phpunit
Änderungen werden auf der Release-Seite dokumentiert.
Aktualisieren Sie die Hauptversion in der Datei composer.json
auf ^4.0
.
{
"require" : {
"nelexa/zip" : " ^4.0 "
}
}
Installieren Sie dann Updates mit Composer
:
composer update nelexa/zip
Aktualisieren Sie Ihren Code, damit er mit der neuen Version funktioniert: BC
zipalign
Funktion entfernt. Diese Funktionalität wird in einem separaten Paket nelexa/apkfile
platziert. Aktualisieren Sie die Hauptversion in der Datei composer.json
auf ^3.0
.
{
"require" : {
"nelexa/zip" : " ^3.0 "
}
}
Installieren Sie dann Updates mit Composer
:
composer update nelexa/zip
Aktualisieren Sie Ihren Code, damit er mit der neuen Version funktioniert:
ZipOutputFile
wurde mit ZipFile
zusammengeführt und entfernt.new PhpZipZipOutputFile()
zu new PhpZipZipFile()
PhpZipZipFile::openFromFile($filename);
to (new PhpZipZipFile())->openFile($filename);
PhpZipZipOutputFile::openFromFile($filename);
to (new PhpZipZipFile())->openFile($filename);
PhpZipZipFile::openFromString($contents);
to (new PhpZipZipFile())->openFromString($contents);
PhpZipZipFile::openFromStream($stream);
to (new PhpZipZipFile())->openFromStream($stream);
PhpZipZipOutputFile::create()
in new PhpZipZipFile()
PhpZipZipOutputFile::openFromZipFile(PhpZipZipFile $zipFile)
> (new PhpZipZipFile())->openFile($filename);
addFromFile
zu addFile
setLevel
zu setCompressionLevel
ZipFile::setPassword
zu ZipFile::withReadPassword
ZipOutputFile::setPassword
zu ZipFile::withNewPassword
ZipOutputFile::disableEncryptionAllEntries
zu ZipFile::withoutPassword
ZipOutputFile::setComment
zu ZipFile::setArchiveComment
ZipFile::getComment
zu ZipFile::getArchiveComment
addDir
, addFilesFromGlob
, addFilesFromRegex
.getLevel
setCompressionMethod
setEntryPassword