ZipArchiv类如何在PHP中使用

介绍

ZipArchiv类如何在PHP中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

要使用该PHP扩展类,需要(PHP 5祝辞=5.2.0 PECL zip祝辞=1.1.0),部分方法需要PHP 5.2 +,且PHP。ini配置支持邮政
对于赢得系统,直接去掉php_zip。dll扩展的注释,然后重启http服务(IIS或Apache)即可
Linux还没有试验,理论上差别不会很大

,功能:
1,解压缩zip文件
2,将文件压缩成zip文件
3,追加文件到zip文件
4,将文件夹打包成zip文件(需要循环添加文件与创建空文件夹)
5,删除压缩文件中的条目

- - - - - - - - - - - - - - - - - - - - - - - - <强> ZipArchive对象常用方法介绍 - - - - - - - - - - - - - - - - - - - - - - - -

测试约定:
,测试文件为text.zip,该压缩文件包含了三个被压缩的文件(hello.txt, word.txt ooxx.jpg),如下所示

代码如下:


文本。zip
,,,,你好。txt
,,,,词。txt
,,,,ooxx.jpg

打开zip文件,以便进一步操作
ZipArchive::打开
, (PHP 5祝辞=5.2.0 PECL zip祝辞=1.1.0)
,混合ZipArchive::开放(字符串$ filename (int旗帜美元])

第2个参数讲解

ZipArchive:: OVERWRITE ,,总是创建一个新的文件,如果指定的zip文件存在,则会覆盖掉
ZIPARCHIVE:: CREATE ,,,,,,如果指定的zip文件不存在,则新建一个
ZIPARCHIVE:: EXCL ,,,,,,如果指定的zip文件存在,则会报错,,,
ZIPARCHIVE:: CHECKCONS

返回值:,

,如果返回值等于下面的属性,表示对应的错误或者返回真正的
, res==美元ZIPARCHIVE:: ER_EXISTS ,,文件已经存在。(文件已经存在)
res==ZipArchive:美元:ER_INCONS ,,Zip归档文件不一致。(压缩文件不一致)
res==ZipArchive:美元:ER_INVAL ,,无效的参数。(无效的参数)
res==ZipArchive:美元:ER_MEMORY ,,Malloc失败。(内存错误?这个不确定)
res==ZipArchive:美元:ER_NOENT ,,没有这样的文件。(没有这样的文件)
res==ZipArchive:美元:ER_NOZIP ,,不是一个zip归档。(没有一个压缩文件)
res==ZipArchive:美元:ER_OPEN ,,,,,,停下来# 39;t打开文件。(不能打开文件)
res==ZipArchive:美元:ER_READ ,,,,,,读取错误。(读取错误)
res==ZipArchive:美元:ER_SEEK ,,,,,,寻找错误。(查找错误)

代码如下:


& lt; ?php
, $ zip=新ZipArchive;
, res美元=$ zip→打开(& # 39;test.zip& # 39;);
,如果(res美元===TRUE) {
,,,,回声& # 39;好# 39;;
,,,,//解压缩到测试文件夹
,,,$ zip→extractTo(& # 39;测试# 39;);
,,,,$ zip→close ();其他
,} {
,,,,回声& # 39;失败了,代码:& # 39;。res美元;
,}
, ?比;

根据压缩文件内的列表索引,返回被压缩文件的名称

ZipArchive:: getNameIndex
,字符串ZipArchive:: getNameIndex (int美元指数[int旗帜美元])

代码如下:


, & lt; ?php
, $ zip=新ZipArchive ();
, res美元=$ zip→打开(& # 39;test.zip& # 39;);
,如果(res美元===TRUE) {
,,,,var_dump ($ zip→getNameIndex (0));//你好。txt
,,,,var_dump ($ zip→getNameIndex (1));//单词。txt
,,,,var_dump ($ zip→getNameIndex (2));//ooxx.jpg
,其他}{
,,,,回声& # 39;失败了,代码:& # 39;。res美元;
,}
, $ zip→关闭();
,比;

根据压缩内的文件名称,获取该文件的文本流

ZipArchive:: getStream
,资源ZipArchive:: getStream(字符串名称美元)

代码如下:


, & lt; ?php
, $ zip=新ZipArchive ();
, res美元=$ zip→打开(& # 39;test.zip& # 39;);
,如果(res美元===TRUE) {
,,,,美元流=$ zip→getStream (& # 39; hello.txt& # 39;);其他
,} {
,,,,回声& # 39;失败了,代码:& # 39;。res美元;
,}
, $ zip→关闭();
, str=stream_get_contents美元(美元流);//这里注意获取到的文本编码
var_dump (str);
,比;

根据压缩文件内的索引(从0开始)修改压缩文件内的文件名

ZipArchive:: renameIndex
, bool ZipArchive:: renameIndex (int美元指数,字符串$新名称)
, (PHP 5祝辞=5.2.0 PECL zip祝辞=1.5.0)

成功时返回真,或者在失败时返回错误的。

代码如下:


& lt; ?php
, $ zip=新ZipArchive;
, res美元=$ zip→打开(& # 39;test.zip& # 39;);
,如果(res美元===TRUE) {
,,,,//把压缩文件内第一个文件修改成新名称。txt
,,,,$ zip→renameIndex (0, & # 39; newname.txt& # 39;);
,,,,$ zip→close ();其他
,} {
,,,,回声& # 39;失败了,代码:& # 39;。res美元;
,}
, ?比;

ZipArchiv类如何在PHP中使用