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 相关文章推荐
目录,文件操作详谈―PHP
Nov 25 PHP
深入PHP FTP类的详解
Jun 13 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 PHP
php使用codebase生成随机数
Mar 25 PHP
PHP中的日期加减方法示例
Aug 21 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
May 25 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
PHP实现多图上传(结合uploadify插件)思路分析
Nov 30 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 PHP
Laravel如何实现自动加载类
Oct 14 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
apache php模块整合操作指南
2012/11/16 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
Python批量启动多线程代码实例
2020/02/18 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
中文师范生自荐信
2014/01/30 职场文书
新任教师自我鉴定
2014/02/24 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
宣传工作经验材料
2014/06/02 职场文书
团队精神口号
2014/06/06 职场文书
首席执行官观后感
2015/06/03 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB