Генератор форм

Баннер

Для веб-мастера

Реклама


Генератор уникального буквенного кода

Рейтинг:
Дата: 19 августа 2011 Просмотры 7365

Сегодня при разработке одного проекта, необходимо было генерировать уникальный буквенный код. Для реализации этой задачи было принято решение брать текущее время в миллисекундах и переводить их в буквенный код. Для этого я использовал следующую функцию:

function num2alpha($n) {
    $r = '';
    for ($i = 1; $n >= 0 && $i < 10; $i++) {
        $r = chr(0x41 + ($n % pow(26, $i) / pow(26, $i - 1))) . $r;
        $n -= pow(26, $i);
    }
    return $r;
}

Результат этой функции будет напоминать нумерацию колонок в Microsoft Excel, т. е. A-Z, AA-ZZ, AAA-ZZZ и т. д. Например:

echo num2alpha(0); // Выведет «A»
echo num2alpha(10); // Выведет «K»
echo num2alpha(100); // Выведет «CW»

А если в качестве аргумента использовать функцию time(), которая возвращает количество секунд, прошедших с начала Эпохи Unix (1 января 1970, 00:00:00 GMT) до текущего времени, то можно получить уникальный буквенный код:

$time = time(); // 1313755781
echo num2alpha($time); // Выведет DFNWCRN

Для обратного декодирования строки нужно использовать эту функцию:

function alpha2num($a) {
    $r = 0;
    $l = strlen($a);
    for ($i = 0; $i < $l; $i++) {
        $r += pow(26, $i) * (ord($a[$l - $i - 1]) - 0x40);
    }
    return $r - 1;
}

Надеюсь для кого-то эта статья будет полезной. Оставляйте в комментариях Ваши способы реализации уникального буквенного кода!

Оцените эту статью:



Интересно почитать

    Получать новые материалы этого сайта на свой email адрес?

    Отправлять мне комментарии по эл. почте?

Реклама

Баннер

Нашли ошибку в тексте

Система Orphus
https://biznesguide.ru/coding/141.html
4,7 из 5 на основе 8 оценок.
Твиттер Facebook Google plus RSS