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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
Oct 31 PHP
php获取中文拼音首字母类和函数分享
Apr 24 PHP
采用ThinkPHP中F方法实现快速缓存实例
Jun 13 PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
Oct 22 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
Feb 12 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多维数组去掉重复值示例分享
2014/03/02 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
php远程下载类分享
2016/04/13 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
PHP中串行化用法示例
2016/11/16 PHP
php中请求url的五种方法总结
2017/07/13 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
js身份证验证超强脚本
2008/10/26 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
单利模式及python实现方式详解
2018/03/20 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Python的in,is和id函数代码实例
2020/04/18 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
python属于哪种语言
2020/08/16 Python
财务助理岗位职责
2013/11/10 职场文书
有针对性的求职自荐信
2013/11/14 职场文书
护士检查书
2014/01/17 职场文书
气象学专业个人求职信
2014/03/15 职场文书
建国大业观后感
2015/06/01 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书