2015-02-15 4 views
-1

Я пытаюсь написать PHP-код, который генерирует уникальное имя файла.Php Как получить уникальное имя файла

В первую очередь это будет проверять, если первый заданное имя «Вектор фона» выходов или нет в папке .Ела да будет добавить 1 в фамилиях так файл будет «Вектор фон 1» так будет повторите попытку, если да, чем предыдущий, последний будет таким новым именем будет 'Векторный фон 11' он будет делать, пока он получит уникальное имя.

я попробовать мой сам

$folder='C:\Users\Desktop\file exits\\'; 
$name='log'; 

$result=file_exists($folder.$name); 
if ($result == "1") { //// file exits so work start 
///// generate name file that not exists in folder 
$name=$name.' 1'; 
$result=file_exists($folder.$name); 

if ($result == "1") { 
$name=$name.' 1'; 
$result=file_exists($folder.$name); 
} 

} 

хорошо что мой прогресс не умный код

ответ

2

Сначала вы можете переписать код так, что ваш «именования» алгоритм живет внутри цикла.

$fname = $folder . $name; 
while (file_exists(fname)) { 
    $fname = $fname . '1'; 
} 

Однако этот код не очень эффективен и потенциально может привести к возникновению проблем. Например, путь к файлу может превышать максимальное количество символов, разрешенных ОС.


Если то, что вы пытаетесь достичь, это просто уникальное имя файла для предотвращения столкновений имен файлов, PHP имеет встроенную функцию, называемую tempnam. Он создает файл с уникальным именем файла с разрешением доступа, установленным до 0600, в указанном каталоге.

строка TempNam (строка $ реж, строка $ префикс)

поэтому код можно переписать так:

$fname = tempname($folder, $name); 
+0

Я предлагаю для цикла с я ++ и использовать I в названии название не станет очень большим, чем –

Смежные вопросы