PHP实现zip压缩解压通用函数
发布时间:2020-05-25 07:06:26 所属栏目:PHP 来源:互联网
导读:PHP实现zip压缩解压通用函数
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 function ezip($zip,$hedef = ''){
$dirname=preg_replace('/.zip/','',$zip);
$root = $_SERVER['DOCUMENT_ROOT'].'/zip/';
// echo $root. $zip;
$zip = zip_open($root . $zip);
// var_dump($zip);
@mkdir($root . $hedef . $dirname.'/'.$zip_dosya);
while($zip_icerik = zip_read($zip)){
$zip_dosya = zip_entry_name($zip_icerik);
if(strpos($zip_dosya,'.')){
$hedef_yol = $root . $hedef . $dirname.'/'.$zip_dosya;
@touch($hedef_yol);
// echo $hedef_yol;
$yeni_dosya = @fopen($hedef_yol,'w+');
@fwrite($yeni_dosya,zip_entry_read($zip_icerik));
@fclose($yeni_dosya);
// $yeni_dosya;
}else{
@mkdir($root . $hedef . $dirname.'/'.$zip_dosya);
// echo $root . $hedef . 'x/'.$zip_dosya;
};
};
}
// ezip('yuol.zip','./tr/');
function zip($path) {
$path=preg_replace('//$/',$path);
preg_match('//([dD][^/]*)$/',$path,$matches,PREG_OFFSET_CAPTURE);
$filename=$matches[1][0].".zip";
// var_dump($filename);
// set_time_limit(0);
$zip = new ZipArchive();
$zip->open($filename,ZIPARCHIVE::OVERWRITE);//return ;
// var_dump($path);
if (is_file($path)) {
$path=preg_replace('////','/',$path);
$base_dir=preg_replace('//[dD][^/]*$/',$path);
$base_dir=addcslashes($base_dir,'/:');
$localname=preg_replace('/'.$base_dir.'/',$path);
// var_dump($localname);
$zip->addFile($path,$localname);
// var_dump($path);
$zip->close();
return;
}elseif (is_dir($path)) {
$path=preg_replace('//[dD][^/]*$/',$path);
$base_dir=$path.'/';//基目录
$base_dir=addcslashes($base_dir,'/:');
// var_dump($base_dir);
}
$path=preg_replace('////',$path);
// var_dump($path);
function addItem($path,&$zip,&$base_dir){
// var_dump($path);
$handle = opendir($path);
// var_dump($path);
while (false !== ($file = readdir($handle))) {
if (($file!='.')&&($file!='..')){
// var_dump($file);
$ipath=$path.'/'.$file;
if (is_file($ipath)){//条目是文件
$localname=preg_replace('/'.$base_dir.'/',$ipath);
var_dump($localname);
$zip->addFile($ipath,$localname);
// var_dump($r);
} else if (is_dir($ipath)){
addItem($ipath,$zip,$base_dir);
$localname=preg_replace('/'.$base_dir.'/',$ipath);
var_dump($localname);
$zip->addEmptyDir($localname);
}
// var_dump($path);
}
}
}
// var_dump($base_dir);
addItem($path,$base_dir);
$zip->close();
}
//调用方法
zip('解压的目录');
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
