Извлечение 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 - путь до папки, куда нужно распаковать архив.
Стоит учитывать, что функция не проверена на вложенных архивах и на вложенных папках.
Комментарии