Задать вопрос

Вопрос о красоте ссылок?

Наверное, все знают про сервисы сокращения ссылок. На выходе у них получаются ссылки вроде <домен>/DdhDRh. Меня интересует вторая часть ссылки. Насколько я понимаю, это id записи в таблице, который закодировали каким-то способом. Первая мысль была base64, но у него в алфавите есть еще знак равно, плюс и слеш, которые видеть в ссылке не хотелось бы.

Собственно вопрос: может, кто в курсе, с помощью чего они получают такие красивые ссылки?


P.S.: Прошу прощения за корявый заголовок. Под конец рабочего дня оказалось трудно придумать что-то более содержательное =)
  • Вопрос задан
  • 5031 просмотр
Подписаться 5 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
WildZero
@WildZero
Как то просили сделать сокращалку. Вторая часть ссылки была просто представление ID в 62 — ричной системе.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Обычный старый добрый ID (число с автоинкриментом) + перевод в другую систему счисления. 62-ичной более чем хватит, как вам и предлагалось выше.
Ответ написан
Комментировать
Sicness
@Sicness
Я не в теме, но очевидно что это не кодирование а просто ID Так как это односторонний алгоритм, где конечных вариантов много меньше чем изначальных, то очевидно могут быть коллизии, то есть выбор алгоритма не важен, можно просто воспринимать как ID. И еще логично предположить, из выше сказанного, что лучше просто делать инкримент id, что бы не мучатся с совпадениями.
Ответ написан
Комментировать
mejedi
@mejedi
pwgen + проверка на уникальность?
Ответ написан
notRly
@notRly
Да, выше правильно подсказывают. Вот пример реализации на php:
	public static function uniq($number)
	{
	    $out   = '';
	    $codes = '23456789abcdefghjkmnpqrstuvwxyz';

	    while ($number > 30) {
	        $key    = $number % 31;
	        $number = floor($number / 31) - 1;
	        $out    = $codes{$key}.$out;
	    }

	    return $codes{$number}.$out;
	}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы