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扩展函数
Oct 09 PHP
php调用mysql存储过程
Feb 14 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 PHP
php读取mysql中文数据出现乱码的解决方法
Aug 16 PHP
php全角字符转换为半角函数
Feb 07 PHP
php数组排序usort、uksort与sort函数用法
Nov 17 PHP
基于php的CMS中展示文章类实例分析
Jun 18 PHP
非常实用的php验证码类
May 15 PHP
Zend Framework数据库操作方法实例总结
Dec 11 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
YII框架模块化处理操作示例
Apr 26 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 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提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
python实现动态创建类的方法分析
2019/06/25 Python
python Tensor和Array对比分析
2020/01/08 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
python绘制雷达图实例讲解
2021/01/03 Python
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
某公司Java工程师面试题笔试题
2016/03/27 面试题
J2EE系统只能是基于web
2015/09/08 面试题
经理助理岗位职责
2014/03/05 职场文书
实习生岗位职责
2014/04/12 职场文书
2015年防汛工作总结
2015/05/15 职场文书
统招统分证明
2015/06/23 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
致运动员赞词
2015/07/22 职场文书
python脚本框架webpy的url映射详解
2021/11/20 Python