Вам нужно будет сохранить URL, поэтому просто получите таблицу:
где id - последовательность автоинкремента, а столбец url индексируется. Таким образом, каждый URL уникален. Самый простой способ - просто использовать идентификатор, но вы можете получить его короче.
Я бы посоветовал преобразовать идентификатор в основную 62 и обратно (10 цифр, 26 заглавных букв, 26 строчных букв = 62) или, возможно, 64 (добавить _ и -).
Под этим я подразумеваю 1234:
1 x 10 3 + 2 x 10 2 + 3 x 10 1 + 4 x 10 0
и есть довольно простой алгоритм для преобразования числа из формы в 10. Таким образом, базовый номер 62:
1234 (основание 10) = 19 х 62 1 + 56 х 62 0 = Jq
если моя математика верна.
Следующие функции должны делать то, что вам нужно.
$digits = range(0, 9) + range('A', 'Z') + range('a', 'z')
function from10($base10) {
global $digits;
$ret = '';
$nd = count($digits);
$n = $nd;
while ($base10 > 0) {
$r = $base10 % $n;
$ret .= $digits[$r];
$n = (int)($base10 / $n);
$n *= $nd;
}
return $ret;
}
function to10($baseN) {
global $digits;
$nd = count($digits);
$ret = 0;
$n = $nd;
for ($i=0; $i<strlen($baseN); $i++) {
$ret += $n * $baseN[$i];
$n *= $nd;
}
return $ret;
}
from10()
конвертирует 1234 в "qJ" (надеюсь) и to10()
конвертирует "qJ" в 1234, если моя математика не выключена.
Цифры на самом деле хранятся в обратном порядке (эквивалент «сто двадцать три» записывается как «321»), потому что с ними легче иметь дело, и нет необходимости, чтобы цифры были в каком-то определенном порядке. .