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下几种删除目录的方法总结
Aug 19 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
五款常用mysql slow log分析工具的比较分析
May 22 PHP
php ajax 静态分页过程形式
Sep 02 PHP
php禁止浏览器使用缓存页面的方法
Nov 07 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
浅谈PDO的rowCount函数
Jun 18 PHP
10款实用的PHP开源工具
Oct 23 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 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字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
python创建列表并给列表赋初始值的方法
2015/07/28 Python
Python使用django搭建web开发环境
2017/06/09 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
Ado与Ado.net的相同与不同
2014/12/08 面试题
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
大二学期个人自我评价
2014/01/13 职场文书
绿色环保口号
2014/06/12 职场文书
法学院毕业生求职信
2014/06/25 职场文书
生物学专业求职信
2014/07/23 职场文书
公司与个人合作协议书
2016/03/19 职场文书