gpt4 book ai didi

php - php 中的短唯一标识

转载 作者:IT王子 更新时间:2023-10-28 23:59:04 26 4
gpt4 key购买 nike

我想创建一个唯一的 id,但 uniqid() 给出了类似 '492607b0ee414' 的东西。我想要的是类似于 tinyurl 给出的东西:'64k8ra'。越短越好。唯一的要求是它不应该有一个明显的顺序,并且它应该看起来比看似随机的数字序列更漂亮。字母优于数字,理想情况下不会大小写混合。由于条目的数量不会那么多(最多 10000 个左右),因此碰撞的风险并不是一个很大的因素。

任何建议表示赞赏。

最佳答案

制作一个返回给定长度的随机字母的小函数:

<?php
function generate_random_letters($length) {
$random = '';
for ($i = 0; $i < $length; $i++) {
$random .= chr(rand(ord('a'), ord('z')));
}
return $random;
}

然后你会想要调用它直到它是唯一的,根据你存储信息的位置,在伪代码中:

do {
$unique = generate_random_letters(6);
} while (is_in_table($unique));
add_to_table($unique);

您可能还想确保这些字母不构成字典中的单词。可能是完整的英语词典,也可能只是一个坏词词典,以避免客户会觉得品味不佳。

编辑:如果您打算使用它,它不是用于大量项目,我也会添加它才有意义,因为如果您获得更多的碰撞(获得表中已有的 ID),这可能会变得非常慢.当然,您需要一个索引表,并且需要调整 ID 中的字母数以避免冲突。在这种情况下,如果有 6 个字母,您将有 26^6 = 308915776 个可能的唯一 ID(减去坏词),这应该足以满足您 10000 个的需要。

编辑:如果你想要字母和数字的组合,你可以使用下面的代码:

$random .= rand(0, 1) ? rand(0, 9) : chr(rand(ord('a'), ord('z')));

关于php - php 中的短唯一标识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/307486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com