Create and decompress a zip file instance using the php ZipArchive class

Source: Internet
Author: User
Tags php ziparchive zip ziparchive

You can also directly read the content in the zip package, which is very convenient. Here we mainly summarize the process of reading and decompressing.

Decompress a package to the specified directory.

The code is as follows: Copy code
<? Php
$ Zip = new ZipArchive;
If ($ zip-> open('test.zip ') === TRUE ){
$ Zip-> extracelist ('/my/destination/dir /');
$ Zip-> close ();
Echo 'OK ';
} Else {
Echo 'failed ';
}
?>

 
If you only need to read the content of a file in the package, you need the file name or the index value of the file.

 

The code is as follows: Copy code
<? Php
$ Zip = new ZipArchive;
If ($ zip-> open('test.zip ') === TRUE ){
Echo $ zip-> getFromName ('example. Php ');
$ Zip-> close ();
}
?>


If example. php is in a directory, you must add a path to obtain the content.

If you only know the file name, but do not know the specific path of the file, you can search for the index of the specified file name, and then retrieve the content by the index.

 

The code is as follows: Copy code
<? Php
$ Zip = new ZipArchive;
If ($ zip-> open('test.zip ') === TRUE ){
$ Index = $ zip-> locateName ('example. Php', ZIPARCHIVE: FL_NOCASE | ZIPARCHIVE: FL_NODIR );
$ Contents = $ zip-> getFromIndex ($ index );
}
?>

 
The locateName method is used to obtain the index. If a file with the same name exists in multiple paths in the compressed package, it seems that only the first index can be returned. To obtain the index of all files with the same name, you can only use the stupid method, loop search.

The code is as follows: Copy code

<? Php
$ Zip = new ZipArchive;
If ($ zip-> open('test.zip ') === TRUE ){
For ($ I = 0; $ I <$ zip-> numFiles; $ I ++)
   {
If (substr_count ($ zip-> getNameIndex ($ I), 'example. Php')> 0 ){
$ Contents = $ zip-> getFromIndex ($ I );
      }
   }
}
?>

I tested php5.3 without any problems and compressed the zip file much faster than the previous zip command.

Related Article

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.