Рецепт №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, она осуществляет проверку существования файла.