推荐一款PHP压缩与解压缩类PclZip

http://www.nowamagic.net/librarys/veda/detail/111

 

PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等。同时也可以对现有的ZIP包进行添加或删除文件。

官方网站:http://www.phpconcept.net/pclzip/

最近在开发我的Wordpress插件ShareLink,在这过程中,发现了PclZip这个操作zip文件的PHP类,不得不推荐下。简单、易用、强大是我对它的评价。

还有另外一个推荐的原因就是在它的源码里面让我发现了一个PHP函数参数的淫荡用法。下面将举例说明。

生成zip文件

用法一:

1<?php
2    include_once('pclzip.lib.php');
3    $archive new PclZip('archive.zip');
4    $v_list $archive->create('file.txt,data/text.txt,folder');
5    if ($v_list == 0) {
6        die("Error : ".$archive->errorInfo(true));
7    }
8?>

用法二:

01<?php
02    include_once('pclzip.lib.php');
03    $archive new PclZip('archive.zip');
04    $v_list $archive->create('data/file.txt,data/text.txt',
05                            PCLZIP_OPT_REMOVE_PATH, 'data',
06                            PCLZIP_OPT_ADD_PATH, 'install');
07    if ($v_list == 0) {
08        die("Error : ".$archive->errorInfo(true));
09    }
10?>

看见create方法的参数没有,再看看方法原型你就知道如何淫荡了。至少我还没有这样用过。

以下为一个简单的压缩全站进行备份的代码:

1<?php
2require_once('pclzip.lib.php');
3$zip new PclZip("archive.zip");
4$v_list $zip->create($_SERVER['DOCUMENT_ROOT'] ,PCLZIP_OPT_REMOVE_PATH,$_SERVER['DOCUMENT_ROOT']);
5if($v_list == 0){ echo '异常:'.$z->errorInfo(true); }
6else echo '备份成功'; }
7?>

其他使用方法:

01<?php
02//解压缩到extract/folder/这个目录中      
03$list $archive->extract(PCLZIP_OPT_PATH, "extract/folder/");      
04         
05//增加这个目录在压缩档中,完成以后压缩档里面会有backup这个目录,backup里面会有这两个档案      
06$list $archive->create("file.txt,image.gif",PCLZIP_OPT_ADD_PATH, "backup");      
07         
08//去掉部份的路径,这里完成后会变成test/file.txt      
09$list $archive->add("/usr/local/user/test/file.txt",PCLZIP_OPT_REMOVE_PATH, "/usr/local/user");      
10         
11//把所有路径都去掉,这个压缩档建立完后,里面就只会有file.txt跟image.gif,不会有目录了      
12$list $archive->create("data/file.txt images/image.gif",PCLZIP_OPT_REMOVE_ALL_PATH);      
13         
14//把解压缩出来的档案的CHMOD设成0777      
15$list $archive->extract(PCLZIP_OPT_SET_CHMOD, 0777);      
16     
17//解压缩部份的档案,这个参数是使用档案名称判别      
18//引数可以用下面这样的阵列      
19$rule_list[0] = 'test/aaa.txt';      
20$rule_list[1] = 'test/ddd.txt';      
21//或是下面这样,一个字串中,用逗号分隔每个要解压缩的档案      
22$rule_list "test/aaa.txt,test/ddd.txt";      
23$list $archive->extract(PCLZIP_OPT_BY_NAME,$rule_list);      
24         
25//解压缩部份的档案,使用php的ereg()函式,档案名称有比对成功的都会被解压缩      
26$list $archive->extract(PCLZIP_OPT_BY_EREG, "aa");      
27         
28//解压缩部份的档案,使用php的preg_match()函式,档案名称有比对成功的都会被解压缩      
29$list $archive->extract(PCLZIP_OPT_BY_PREG, "/^bb/");      
30//上面这两个函式如果不懂的话,请先研究正规表示法(Regular Expression)      
31         
32//依照阵列中元素的索引解压缩,可是我不太懂index啥 = =a      
33$list $archive->extract(PCLZIP_OPT_BY_INDEX, array('0-1','6-7'));      
34         
35//将一个档案内容解压缩成一个字串      
36$list $archive->extract(PCLZIP_OPT_BY_NAME, "data/readme.txt",PCLZIP_OPT_EXTRACT_AS_STRING);      
37         
38//将一个档案内容解压缩完后直接输出(echo)      
39$list $archive->extract(PCLZIP_OPT_BY_NAME, "data/readme.txt",PCLZIP_OPT_EXTRACT_IN_OUTPUT);      
40         
41//将一个档案加入一个压缩档中,但不会对此档案压缩      
42$list $archive->add("data/file.txt", PCLZIP_OPT_NO_COMPRESSION);      
43         
44//对此压缩档增加一个注解,如果原本就有注解的话会被覆盖掉      
45$list $archive->create("data", PCLZIP_OPT_COMMENT, "Add a comment");      
46         
47//对此压缩档增加一个注解,如果原本就有注解的话会接在后面      
48$list $archive->add("data", PCLZIP_OPT_ADD_COMMENT, "Add a comment after the existing one");      
49         
50//对此压缩档增加一个注解,如果原本就有注解的话会放在原本的注解前面      
51$list $archive->add("data", PCLZIP_OPT_PREPEND_COMMENT, "Add a comment before the existing one");     

 

类库下载:pclzip-2-8-2.zip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值