看看这个 URL:http://imgur.com/JLhIuYt
你会看到这个URL有一个看似随机的字符串生成,它是由7个字符组成的
- 小写字母(26 个字符)
- 大字母(26 个字符)
- 数字(10 个数字)
n = (26+26+10) = 62
我想知道如何生成一个只有 7 个字符的随机字符串,作为 GUID。
imgur 使用的只有 7 个字符,它们可以生成 3.521.614.606.208 种变体(62 的 7 次方)。现在的问题是,imgur 如何处理用作标识符的每个变体,因为这些数字似乎是随机生成的。
有没有办法找出如何使用 7 个字符作为 UID 并确保它们不会重复?
一个解决方案可能是,以 block 的形式生成它们并一个接一个地使用。好像不太好。
任何形式的赞赏!
顺便说一句。 最好用 PHP 生成随机字符串
最佳答案
您可以使用这个单行代码生成一个随机字符串:
substr(
str_shuffle(
str_repeat('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', 7)
),
0,
7
)
然后,您可以检查数据库是否已被使用,例如:
while(
existsInTheDB(
$str = substr(
str_shuffle(
str_repeat(
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',
7
)
),
0,
7
)
)
){}
//now you can use $str
关于javascript - 如何生成只有 7 个字符的 UID 并排除像 imgur.com 这样的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25607418/