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 相关文章推荐
支持php4、php5的mysql数据库操作类
Jan 10 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
PHP 网络开发详解之远程文件包含漏洞
Apr 25 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
php常用数学函数汇总
Nov 21 PHP
php二维码生成
Oct 19 PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
PHP实现的解汉诺塔问题算法示例
Aug 06 PHP
PHPUnit + Laravel单元测试常用技能
Nov 06 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/06/22 PHP
php判断终端是手机还是电脑访问网站的思路及代码
2013/04/24 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
PHP利用curl发送HTTP请求的实例代码
2020/07/09 PHP
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
Python3实现简单可学习的手写体识别(实例讲解)
2017/10/21 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
Python调用C语言程序方法解析
2020/07/07 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
护理职业应聘自荐书
2013/09/29 职场文书
运动会解说词200字
2014/02/06 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
淘宝好评语大全
2014/05/05 职场文书
小学捐书活动总结
2014/07/05 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python