php的ZipArchive类用法实例


Posted in PHP onOctober 20, 2014

本文实例讲述了php的ZipArchive类用法,分享给大家供大家参考。具体如下:

通常来说,php5.2开始支持ZipArchive类,php4只能使用zip函数。其实在官方实现zip类之前,已经有大牛贡献了打包解压zip文件的方法。现在php包含了ZipArchive类,当然优先使用。使用该类能创建和解压zip文件,也能直接读取zip压缩包内的内容,很方便,这里主要总结下读取和解压的过程。

解压一个包到指定目录:

<?php

$zip = new ZipArchive;

if ($zip->open('test.zip') === TRUE) {

    $zip->extractTo('/my/destination/dir/');

    $zip->close();

    echo 'ok';

} else {

    echo 'failed';

}

?>

如果只是需要读取包中某个文件的内容,需要文件名或者文件的索引值。
<?php

$zip = new ZipArchive;

if ($zip->open('test.zip') === TRUE) {

    echo $zip->getFromName('example.php');

    $zip->close();

}

?>

如果example.php在某目录下,获取内容时需要加上路径。

如果只知道文件名,而不知到文件的具体路径,可以搜索指定文件名的索引,再依靠索引获取内容。

<?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);

}

?>

上面获取索引依靠 locateName方法,如果压缩包内多个路径下有同名文件,好像只能返回第一个的索引,如果要获取所有同名文件的索引,只能使用笨办法,循环搜索。
<?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);                            

            }

       }

}

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
php中使用explode查找某个字符是否存在的方法
Jul 12 PHP
php递归遍历删除文件的方法
Apr 17 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
Zend Framework教程之Bootstrap类用法概述
Mar 14 PHP
php使用pear_smtp发送邮件
Apr 15 PHP
理解php依赖注入和控制反转
May 11 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
Feb 16 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 PHP
laravel 使用auth编写登录的方法
Sep 30 PHP
php+laravel 扫码二维码签到功能
May 15 PHP
php自定义apk安装包实例
Oct 20 #PHP
php防止站外远程提交表单的方法
Oct 20 #PHP
php获取textarea的值并处理回车换行的方法
Oct 20 #PHP
php实现给图片加灰色半透明效果的方法
Oct 20 #PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 #PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
Oct 20 #PHP
php实现删除指定目录下相关文件的方法
Oct 20 #PHP
You might like
桌面中心(三)修改数据库
2006/10/09 PHP
php简单封装了一些常用JS操作
2007/02/25 PHP
PHP 读取文件的正确方法
2009/04/29 PHP
让textarea自动调整大小的js代码
2011/04/12 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
Python中有趣在__call__函数
2015/06/21 Python
PyQt5实现拖放功能
2018/04/25 Python
Python之list对应元素求和的方法
2018/06/28 Python
django用户登录和注销的实现方法
2018/07/16 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
Django的CVB实例详解
2020/02/10 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
浅谈Python中的字符串
2020/06/10 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
教师通用专业自荐书范文
2014/02/11 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
《圆明园的毁灭》教学反思
2014/02/28 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
入党自我鉴定
2014/03/25 职场文书
经营理念标语
2014/06/21 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
标准单位租车协议书
2014/09/23 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
python中%格式表达式实例用法
2021/06/18 Python
SQL Server使用导出向导功能
2022/04/08 SQL Server