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 相关文章推荐
linux iconv方法的使用
Oct 01 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
PHP curl使用实例
Jul 02 PHP
PHP代码实现爬虫记录――超管用
Jul 31 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
php与python实现的线程池多线程爬虫功能示例
Oct 12 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 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
基于mysql的bbs设计(一)
2006/10/09 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
php array_map()函数实例用法
2021/03/03 PHP
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
2006/12/23 Javascript
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
js操作二进制数据方法
2018/03/03 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
vue实现评价星星功能
2020/06/30 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
win7 下搭建sublime的python开发环境的配置方法
2014/06/18 Python
python if not in 多条件判断代码
2016/09/21 Python
Python中turtle作图示例
2017/11/15 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
Java面试题及答案
2012/09/08 面试题
高中毕业自我鉴定范文
2013/10/02 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python
oracle数据库去除重复数据
2022/05/20 Oracle