www.sitepoint.com/building-your-own-url-shortener
я не сильный знаток английского, перевел как смог)
<?php
protected static $chars = "123456789bcdfghjkmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ";
...
# конвертируем id записи в короткую численно буквенную строку
protected function convertIntToShortCode($id) {
$id = intval($id);
if ($id < 1) {
throw new Exception("ID не является целочисленным значением");
}
$length = strlen(self::$chars);
# убедитесь, что длина доступных символов достаточна -
# там должно быть по крайней мере 10 символов
if ($length < 10) {
throw new Exception("Слишком мало символов");
}
$code = "";
while ($id > $length - 1) {
# определить значение следующего высшего
# символа который должен быть добавлен в строку
$code = self::$chars[fmod($id, $length)] . $code;
# сбросить $id до значения остатка для дальнейщего преобразования
$id = floor($id / $length);
}
# остаточное значение $id меньше чем длина self::$chars
$code = self::$chars[$id] . $code;
return $code;
}
...
?>
function convertIntToShortCode(id) {
var chars = '123456789bcdfghjkmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ',
code = '';
id = parseInt(id);
if (isNaN(id)) throw Error('The "id" is not a valid integer');
while (id > chars.length - 1) {
code = chars[id % chars.length] + code;
id = Math.floor(id / chars.length);
}
return chars[id] + code;
}