Рецепт №67. Из книги «128 рецептов php»
Перейти к оглавлению
При разработке часто приходится генерировать множество файлов, как временных, так и постоянных — рабочих. И не редко в связи с этим может возникнуть конфликты при создании файлов, поскольку имена могут совпадать. Чтобы решить эту проблему, можно перед созданием файла, проверять наличие такого имени. И если название уже существует, то приписывать к имени файла префикс, например, так: “123_file_name.txt”.
Пример:
// пример использования
print_r(getUniqName('./files/', 'test_file.txt'));
// при существовании test_file.txt
// результат будет - 1_test_file.txt
/**
* Получение уникального имени для файла
*
* @param string $path - путь к папке,
* где будет проверка
*
* @param string $fileName - исходное имя файла
*
* @return string - уникальное имя файла
*/
function getUniqName($path, $fileName){
$num = 1; // счетчик
// проверяем, существует ли файл с таким именем
if(file_exists($path . $fileName)) {
// добавляем префикс и проверяем
// наличие файла с таким именем
while(file_exists($path.$num.'_'.$fileName)){
$num ++;
}
return $num . '_' . $fileName;
}else{
return $fileName;
}
}
В этом примере была использована, ранее не описанная функция — file_exists, она осуществляет проверку существования файла.
