Генерация короткой ссылки на 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
Комментарии
Спасибо за хорошее решение