如何使用CodeIgniter生成一个包含5位字母数字的唯一ID?

4

我有一个项目需要为用户生成一个独特的5位字母数字ID。如何使用CodeIgniter实现这一点?

谢谢。


我还没有尝试过,但你不可以只使用纯PHP的dechex(int)吗? - scunliffe
您可以查看这篇帖子,它有相似的要求。http://stackoverflow.com/questions/3289086/generate-10-digits-alphanumeric-value-in-php-with-first-third-fourth-digit-must - Alpesh
6个回答

13

在字符串助手中有一个函数叫做random_string,可以用它来实现这个功能。

$this->load->helper('string');
echo random_string('alnum',5);

Details


这是一个包含有关CodeIgniter字符串助手的详细信息的链接。

@navruzm,你需要在循环中检查唯一性,并重新生成,否则它只是一个普通的随机字符串。 - Farside

3

1

由于您需要一个唯一的ID,因此您应该使用用户记录中的唯一数据(例如索引),或者只需生成一个随机数据并直接检查其在数据库中的出现。

以下是两种方法:

  1. 随机字符串
  2. 唯一ID

第一个链接有问题,这里是正确的链接: https://www.codeigniter.com/user_guide/helpers/string_helper.html - Marcelo Agimóvel

0
以下代码片段必须在SharePoint列表的计算字段下编写,以动态生成组合字母数字项ID,采用增量模型。
=field1&"-"&LEFT("00000",5-(LEN(TEXT([field2],"0"))))&TEXT([field2],"0")

field1=包含前缀alpha值,例如(xyz,abc)

field2=包含field1范围起始值,例如(1,10,20)

输出:xyz-00001,abc-00010..


0

我强烈建议在这种情况下使用UUID, 因为您的项目肯定会发展成为更严肃的事情。

例如,这是我们在项目中生成UID的方式:

<?php 
// ...
public function getUid($uid = null)
{
    while (! $this->isValid($uid)) {
        $uid = sprintf('%04x%04x%02x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xff));
    }
    return $uid;
}

或者找到另一个线程,其中包含生成UUID v4的更复杂算法


0

将用户的数字ID(我假设您已经拥有)使用base_convert($id, 10, 36);转换为36进制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接