function unzip($znm)
{
if (!file_exists($znm)){
throw new Exception("[$znm] not exists ");
}
$dnm = pathinfo($znm, PATHINFO_FILENAME);
if (file_exists($dnm) && ! is_dir($dnm)){
throw new Exception("[$dnm] is exists file");
}
$zfd = new ZipArchive();
if ($zfd->open($znm) !== false) {
$zfd->extractTo($dnm);
$zfd->close();
}
$scand1 = array_diff(scandir($dnm), array( '..', '.' ));
if (count($scand1) != 1) return ;
foreach ($scand1 as &$f1) { // sub has 1 folder , move sub/* ..
if (is_dir($f1)){
$scand2 = array_diff(scandir("$dnm/$f1"), array( '..', '.' ));
foreach ($scand2 as &$f2) {
rename("$dnm/$f1/$f2", "$dnm/$f2");
}
}
break;
}
rmdir($dnm);
}
Sort: Trending