【问题标题】:PHP Ticket ID GenerationPHP 票证 ID 生成
【发布时间】:2012-05-20 22:43:29
【问题描述】:

我正在创建一个用于学习目的的票证系统,我想知道如何创建一个与此类似的简单的唯一票证 ID:gD8f-jxS

第一部分会有4个随机大小写的字符

(允许使用字母和数字,然后它会有一个破折号,然后是 3 个任意大小写的随机字母或数字。

【问题讨论】:

  • 你嫁给了那个模式吗?因为只使用uniqid() 要容易得多。
  • 有点,但如果这样更容易,我可以使用它,有没有办法缩短它?如果没有也没关系。
  • 不,除非你对其进行字符串操作,否则它不能被缩短,这会破坏它的唯一性。搜索此站点以使用 PHP 生成 Youtube id。制作短标识符的例子很多。
  • 好的,谢谢你的帮助:)

标签: php random unique


【解决方案1】:
public function generateCode(){

    $unique =   FALSE;
    $length =   7;
    $chrDb  =   array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9');

    while (!$unique){

          $str = '';
          for ($count = 0; $count < $length; $count++){

              $chr = $chrDb[rand(0,count($chrDb)-1)];

              if (rand(0,1) == 0){
                 $chr = strtolower($chr);
              }
              if (3 == $count){
                 $str .= '-';
              }
              $str .= $chr;
          }

          /* check if unique */
          //$existingCode = UNIQUE CHECK GOES HERE  
          if (!$existingCode){
             $unique = TRUE;
          }
    }
    return $str;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多