Переименуйте ваш конкретный файл перед его извлечением.
$zip = new ZipArchive;
$res = $zip->open($tmp_name);
if ($res === TRUE) {
$zip->renameName('pricelist025.xml','temp.xml');
$path = _PATH."/files/";
$zip->extractTo($path);
$zip->close();
echo 'Unzip!';
} else {
echo 'failed, code:' . $res;
}
Надеюсь, это сработает.
ОБНОВЛЕНИЕ 1
Есть два варианта, если вы хотитеизменить имена файлов.
1. изменить имена файлов перед извлечением - Таким образом, zip-файлы будут изменены
2. изменить имена файлов после извлечения - Zip-файлы останутсякак и раньше
Изменение имен файлов перед извлечением
Мы должны определить шаблон для имен файлов.
Здесь,Файлы будут в этом шаблоне: myfile0.xml, myfile1.html, adn so on..
Примечание: расширение будет сохранено.
$zip = new ZipArchive;
$res = $zip->open('hello.zip');
$newfilename = 'myfile';
for($i=0;$i<$zip->count();$i++)
{
$extension = pathinfo($zip->getNameIndex($i))['extension'];
$zip->renameName($zip->getNameIndex($i), $newfilename.$i.'.'.$extension);
}
Изменение имен файлов после извлечения
Имена файлов будут в том же порядке, что и выше.
$directory = 'hello/'; //your extracted directory
$newfilename = 'myfile';
foreach (glob($directory."*.*") as $index=>$filename) {
$basename = pathinfo($filename)['basename'];
if(!preg_match('/myfile\d\./', $basename)) {
$extension = pathinfo($filename)['extension'];
rename($filename,$newfilename.$index.'.'.$extension);
}
}
Что мы здесь сканируем все файлы из извлеченного каталога, для которого нет имени файла вскороговорка myfile[num].
и затем мы меняем его имя.
ОБНОВЛЕНИЕ 2
Я просто неiced, вы обновили свой вопрос.
Поскольку у вас есть только один файл, и вы хотите извлекать его каждый раз под другим именем.
Вы должны переименовывать его каждый раз, когда извлекаете.
$zip = new ZipArchive;
$newfilename = "myfile".rand(1,999); //you can define any safe pattern here that suites you
if($zip->open('help.zip')===TRUE)
{
$path = '/your/path/to/directory';
$filename = $zip->getNameIndex(0);
if($zip->extractTo($path))
{
echo "Extracted";
}else{
echo "Extraction Failed";
exit();
}
$extension = pathinfo($filename)['extension'];
rename($path."/$filename",$path."/$newfilename".'.'.$extension);
echo "Extracted with different name successfully!";
} else {
echo "Failed";
}