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 相关文章推荐
2014最热门的24个php类库汇总
Dec 18 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
php自定义urlencode,urldecode函数实例
Mar 24 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
微信公众平台DEMO(PHP)
May 04 PHP
php好代码风格的阶段性总结
Jun 25 PHP
PHP自定义函数实现格式化秒的方法
Sep 14 PHP
PHP框架laravel的.env文件配置教程
Jun 07 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
php实现QQ小程序发送模板消息功能
Sep 18 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 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
Zend的MVC机制使用分析(二)
2013/05/02 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
Python实现简易Web爬虫详解
2018/01/03 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
Python创建自己的加密货币的示例
2021/03/01 Python
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
贷款担保申请书
2014/05/20 职场文书
合作意向书
2014/07/30 职场文书
谢师宴答谢词
2015/01/05 职场文书
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫