/** New Creatzip ($_dir,$_zipname), *@ _dir is the compressed folder name, can use the path, example ' a ' or ' a/test.txt ' or ' test.txt ' *@ _zipname is the compressed package name, can use the path, example ' A/test.zip ' or ' test.zip ' **/classCreatzip {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 (); } //Detecting and generating catalogs Private functionmkdirs () {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.‘ /‘; } } } } } //generate a ZIP archive package Private functioncreat () {$zip=Newziparchive; 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)); } } } //Read folder All Files 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); } //determine if the folder is empty Private functionIsEmpty ($dir) { if($_dirs=Opendir($dir)) { while(($file=Readdir($dirs)) !=false) { if($file! = '. ' &&$file! = ' ... ') { Closedir($dirs); return true; Break; } } Closedir($dirs); return false; } }}
Reprint Please specify source: http://www.ly89.cn/detailB/41.html
Php method for generating Zip files, supporting file and compressed package path lookup