Извлечение zip архива с переименованием файлов при наличии дубликатов в папке (PHP)

Пример функции, которая извлекает файлы из архива, при этом переименовывая их, если в папке назначения уже есть файлы с таким именем. 

function extractZip($zipFilePath, $folderToExtract) 
{
$zipArchive = new ZipArchive();
$result = $zipArchive->open($zipFilePath);
if ($result === TRUE) {
for ($i = 0; $i < $zipArchive->numFiles; $i++) {
$filename = $zipArchive->getNameIndex($i);
$filePath = $folderToExtract. '/' . $filename;
if (file_exists($filePath)) {
$fileInfo = pathinfo($filename);
$newFileName = $fileInfo['filename'] . '_(copy).' . $fileInfo['extension'];
copy("zip://" . $zipFilePath . "#" . $filename, $folderToExtract . '/' . $newFileName);
} else {
copy("zip://" . $zipFilePath. "#" . $filename, $filePath);
}
}
$zipArchive->close();
}
}

Параметры функции: 

$zipFilePath - путь до zip файла

$folderToExtract - путь до папки, куда нужно распаковать архив. 

 

Стоит учитывать, что функция не проверена на вложенных архивах и на вложенных папках. 

Комментарии

Комментариев пока нет, вы можете оставить свой: