PHP 解压zip文件的函数封装
2015-12-03 16:24
851 查看
/** * zip文件解压 * * @param $zipFilePath zip文件的路径,可以不加zip文件后缀.如果其他类型的文件伪装成zip解压也会失败 * @param $directoryPath 解压到的文件夹路径 * @param null $fileExtensionArray 允许解压的文件后缀名数组,默认为null,解压任何类型的文件 * * @return bool 解压失败返回false,成功返回true */ function unZipFile($zipFilePath, $directoryPath, $fileExtensionArray = null) { if (!file_exists($zipFilePath)) { return false; } if (!is_dir($directoryPath)) { // 解压后是不允许执行的,但是任何人可以读写,方便处理 if (!mkdir($directoryPath, 0666, true)) { return false; } } $resource = zip_open($zipFilePath); // 其他类型的文件伪装成zip文件时出现此种情况 if (is_numeric($resource)) { return false; } while ($dir_resource = zip_read($resource)) { if (!zip_entry_open($resource, $dir_resource)) { continue; } $file_name = $directoryPath . zip_entry_name($dir_resource); $file_path = substr($file_name, 0, strrpos($file_name, '/')); if (!is_dir($file_path)) { if (!mkdir($file_path, 0666, true)) { return false; } } if (is_dir($file_name)) { zip_entry_close($dir_resource); continue; } if (isset($fileExtensionArray) && count($fileExtensionArray) > 0) { if (!in_array(pathinfo($file_name, PATHINFO_EXTENSION), $fileExtensionArray)) { continue; } } $file_size = zip_entry_filesize($dir_resource); $file_content = zip_entry_read($dir_resource, $file_size); file_put_contents($file_name, $file_content); zip_entry_close($dir_resource); } zip_close($resource); return true; }
5.4 下测试通过,其他的情况可以扩展此函数即可,如限制zip文件的大小
相关文章推荐
- php-fpm.conf详细解析篇
- PHP如何实现无限回复
- PHP 匹配中文(UTF-8)
- 无法为 php_mysqli 指定 mysqli.default_socket 参数
- php 把秒数转换为时长(h:i:s格式)
- php基于getimagesize 上传图片验证
- PotPlayer播放器在双屏扩展模式下,视频播放时所遇到的几个常见问题的专业解答
- CGI PHP安装
- IIS下配置PHP
- matplotlib画图
- 使用PHPExcel实现对excel数据的导入和导出
- php统计中文个数
- php 编译安装的一个 configure 配置
- PHP中Session引起的脚本阻塞问题解决办法
- phpcms v9如何更改分页显示条数?
- WebStorm注册码 PhpStorm注册码
- phpstorm,webstorm取消自动保存并标识修改的文件为星星标记
- php和织梦获取顶级域名 ,根据判断输出指定文字
- 比editplus好用的编辑器sublime text3
- VSFTP基线安全