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-fpm的两种进程管理模式详解
Jun 03 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
php对二维数组按指定键值key排序示例代码
Nov 26 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
详细解读php的命名空间(一)
Feb 21 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 10 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
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
Python写的贪吃蛇游戏例子
2014/06/16 Python
Python多线程实例教程
2014/09/06 Python
python实现获取Ip归属地等信息
2016/08/27 Python
使用Python实现博客上进行自动翻页
2017/08/23 Python
python实现手机通讯录搜索功能
2018/02/22 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
2014年五四青年节活动方案
2014/03/29 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
病媒生物防治方案
2014/05/13 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
导游词之潮音寺
2019/09/26 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS