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 相关文章推荐
从Web查询数据库之PHP与MySQL篇
Sep 25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
PHP中的命名空间详细介绍
Jul 02 PHP
php生成数字字母的验证码图片
Jul 14 PHP
Yii2 rbac权限控制操作步骤实例教程
Apr 29 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
PHP Primary script unknown 解决方法总结
Aug 22 PHP
设定php简写功能的方法
Nov 28 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 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设计模式 Mediator (中介者模式)
2011/06/26 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
Python基于PycURL实现POST的方法
2015/07/25 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
提升python处理速度原理及方法实例
2019/12/25 Python
Python测试线程应用程序过程解析
2019/12/31 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
超市后勤自我鉴定
2014/01/17 职场文书
室内设计专业毕业生求职信
2014/05/02 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书