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 相关文章推荐
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
php获取网页内容方法总结
Dec 04 PHP
php 获取客户端的真实ip
Nov 30 PHP
PHP IPV6正则表达式验证代码
Feb 16 PHP
PHP 加密解密内部算法
Apr 22 PHP
PHP遍历二维数组的代码
Apr 22 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
Jul 25 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
Laravel源码解析之路由的使用和示例详解
Sep 27 PHP
PHP架构及原理知识点详解
Dec 22 PHP
PHP强制转化的形式整理
May 22 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中socket通信机制实例详解
2015/01/03 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
JavaScript 语言的递归编程
2010/05/18 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
简单实现js悬浮导航效果
2017/02/05 Javascript
超全面的javascript中变量命名规则
2017/02/09 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
React中常见的动画实现的几种方式
2018/01/10 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
python中web框架的自定义创建
2019/09/08 Python
pytorch forward两个参数实例
2020/01/17 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
大学生活动总结模板
2014/07/02 职场文书
勤俭节约主题班会
2015/08/13 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript