您好,欢迎访问一九零五行业门户网

通过php生成zip压缩文件,支持文件和压缩包路径查找

/* *   new creatzip($_dir,$_zipname); *@ _dir是被压缩的文件夹名称,可使用路径,例 'a'或者'a/test.txt'或者'test.txt' *@ _zipname是压缩后的压缩包名称,可使用路径,例 'a/test.zip'或者'test.zip' **/ class creatzip {     private $_dir;     private $_zipdir;     private $_zipname;           public function __construct($dir,$zipname) {         $this->_dir = $dir;         $this->_zipdir = basename($dir);         $this->_zipname = $zipname;         $this->mkdirs();         $this->creat();     }     //检测并生成目录     private function mkdirs() {         if (!is_dir(dirname($this->_zipname))) {             $arr = explode('/', dirname($this->_zipname));             $arrs = '';             foreach($arr as $value) {                 if (!is_dir($arrs.$value)) {                     if (!!mkdir($arrs.$value)) {                         $arrs .= $value.'/';                     }                 }             }         }     }     //生成zip压缩包     private function creat() {         $zip = new ziparchive;         if (is_dir($this->_dir)) {             $this->readdir($this->_dir,$files);             if ($zip->open($this->_zipname,ziparchive::create)) {                 foreach ($files as $value) {                     preg_match('//('.$this->_zipdir.'/.*)/', $value, $match);                     if (is_dir($value)) {                         @$zip->addemptydir($value, $match[1]);                     } else {                         @$zip->addfile($value, $match[1]);                     }                 }                 $zip->close();             }         } else {             if ($zip->open($this->_zipname,ziparchive::create)) {                 $zip->addfile($this->_dir, basename($this->_dir));             }         }     }     //读取文件夹所有文件     private function readdir($dir,&$arr) {         if ($dirs = opendir($dir)) {             while (($file=readdir($dirs)) != false) {                 if ($file == '.' || $file == '..') continue;                 $files = $dir .'/'. $file;                 if (is_dir($files) && $this->isempty($files)) {                     $this->readdir($files,$arr);                 } else {                     $arr[] = $files;                 }             }         }         closedir($dirs);     }     //判断文件夹是否为空     private function isempty($dir) {         if ($_dirs = opendir($dir)) {             while (($file=readdir($dirs)) != false) {                 if($file != '.' && $file != '..') {                     closedir($dirs);                     return true;                     break;                 }             }             closedir($dirs);             return false;         }     } }
以上就介绍了php生成zip压缩文件的方法,支持文件和压缩包路径查找,包括了读取文件方面的内容。
相关文章:
使用php生成zip压缩文件的方法附详细代码
php实现在线解压zip压缩文件
简单的php创建zip压缩文件的方法
其它类似信息

推荐信息