从URL Shortener的自定义位值表示法生成唯一ID

时间:2011-02-08 20:51:35

标签: php database data-structures number-formatting

我想制作一个具有以下URL格式的网址缩短器: 的 http://myurlshortner.com/ {ID}

id 是唯一的,并且是根据以下地方 - 值表示法序列/系统/系列生成的:

0
1
2
.
.
.
9
a
b
c
.
.
.
z

例如: http://myurlshortner.com/1b6z

为了保存数据库的条目,我想让 id 成为每个新条目递增的主键(或唯一字段),并遵循上述顺序。我怎么能这样做?

对于数据存储,我将使用Amazon SimpleDB。因此,不会有任何存储过程或其他DBMS功能,例如我可以使用的MySQL。

这与({3}}和http://tinyurl.com这样的网址缩短版完全相同。

...我正在用PHP编码。我希望你理解我的问题。

1 个答案:

答案 0 :(得分:1)

只需将普通的基数10 id转换为基数36即可实现您的目标。

Base 36使用数字0-9,然后使用字母A-Z。

您可以在将转换存储到数据库中之前进行转换,并使用转换后的数字作为ID,或者只使用正常的基数10自动增量并在代码中进行转换。

请参阅:http://php.net/manual/en/function.base-convert.php

php > echo base_convert(123456789, 10, 36);
21i3v9