我想使用带有 Auto Incr 的 MySQL 表字段 (question_id) 中的整数引入短 uniq 字符串 ID。
示例当用户指向 www.something.com/SjBWY -> php 将获取 id=23511 的记录;
我想隐藏有关问题数量的信息,并使用某种翻译算法将 question_code 以 1 对 1 映射到 question_id。我不想将 question_code 存储在数据库中,我相信 MySQL 开发人员比我更聪明,并且已经创建了可靠的机制来生成 uniq 数字。
天真的方法:(http://ideone.com/rK4hzx)
$num = 11231;
while($num > 0) {
$v = ord( $num % 10);
$v += 25;
echo chr($v);
$num = round($num / 10);
}
// JLKJJ
$result = array_reverse(str_split('JLKJJ'));
foreach ($result as $single) {
echo chr(ord( $single)-25);
}
// 11231
问题:您能提出更好的解决方案吗?
幼稚的弱点:
- 我希望能够使用大小写字母
- 我希望能够将字符串长度限制为尽可能长的 5。
- 在生成的字符串中不应该是明显的序列。11 的值应尽可能远离 12。
编辑 算法应该是对称的意味着我可以翻译 Int->String 和 String->Int。MD5 和其他哈希算法只是一种方式,我无法从 String->Int 翻译