Генерация короткой ссылки на php
Простая функция на php генерации короткой ссылки, например, из id ссылки. Сначала сохраняем в базу данных ссылку получаем её id и прогоняем через функцию GetShortUrl, на выходе получаем строку сокращенной ссылки и сохраняем её к записи данной ссылки. Очень удобно если делаете рассылку и в письме нужно указать ссылку на это письмо для online просмотра (в этом случае не забудьте добавить токен для защиты от случайных переходов). Дополнительно есть возможность сделать ссылки одного размера, например, 6 символов как в данном примере. Для большого количества вариаций можно использовать кириллические символы, но внешнее может вызывать путаницу.
function getShortUrl(int $a)
{
$array = array (
"0", // 0
"1", // 1
"2", // 2
"3", // 3
"4", // 4
"5", // 5
"6", // 6
"7", // 7
"8", // 8
"9", // 9
"a", // 10
"b", // 11
"c", // 12
"d", // 13
"e", // 14
"f", // 15
"g", // 16
"h", // 17
"i", // 18
"j", // 19
"k", // 20
"l", // 21
"m", // 22
"n", // 23
"o", // 24
"p", // 25
"q", // 26
"r", // 27
"s", // 28
"t", // 29
"u", // 30
"v", // 31
"w", // 32
"x", // 33
"y", // 34
"z", // 35
"A", // 36
"B", // 37
"C", // 38
"D", // 39
"E", // 40
"F", // 41
"G", // 42
"H", // 43
"I", // 44
"J", // 45
"K", // 46
"L", // 47
"M", // 48
"N", // 49
"O", // 50
"P", // 51
"Q", // 52
"R", // 53
"S", // 54
"T", // 55
"U", // 56
"V", // 57
"W", // 58
"X", // 59
"Y", // 60
"Z", // 61
);
$mas = array_reverse(getRemaindersDividedBy62($a));
$string = "";
foreach ($mas as $value)
{
$string .= $array[$value];
}
// если нужно какое-то минимальное количество символов
$strlen = strlen($string);
if ($strlen < 6) {
for ($i = 0; $i < (6 - $strlen); $i++) {
$string = "0".$string;
}
}
return $string;
}
// получает массив остатков от деления на 62
function getRemaindersDividedBy62(int $a, array $arr = [])
{
$b = $a/62;
$arr[] = $a%62;
if ($b >= 1) {
$arr = func_62((int) $b, $arr);
}
return $arr;
}
echo getShortUrl(100000000);
Результат: 06LAze
Метки:
php
Комментарии