首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成随机字符串

生成随机字符串
EN

Stack Overflow用户
提问于 2011-07-26 14:23:54
回答 6查看 12.3K关注 0票数 0

如何生成长度应为16位、唯一、由1-9、a-z和A-Z组成的代码(明显区分大小写,因此Abc1与abc1不同)例如: Ahs78D7xkEshud45

我试过这样做,但似乎找不到最简单的方法。

谢谢你的帮忙!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-07-26 14:31:13

如果唯一性不是很重要,你可以尝试这样做:

代码语言:javascript
复制
function randomString() {
    $length = 16;
    $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $str = "";    

    for ($i = 0; $i < $length; $i++) {
        $str .= $chars[mt_rand(0, strlen($chars) - 1)];
    }

    return $str;
}

要获得更独特的替代方法,请使用散列函数:

代码语言:javascript
复制
$str = substr(base64_encode(sha1(mt_rand())), 0, 16);
票数 13
EN

Stack Overflow用户

发布于 2011-07-26 14:31:16

可以使用mt_rand() + md5 + base64的组合,并使用substr进行剪切

尝试以下代码:

代码语言:javascript
复制
<?php

$unique = substr(base64_encode(md5( mt_rand() )), 0, 15);

?>

编辑:实际上不需要md5位,所以下面的代码会更容易更快:

代码语言:javascript
复制
<?php

$unique = substr(base64_encode(mt_rand()), 0, 15);

?>

edit2:这会生成如下字符串:

NTA2YWUxODEzNDkw

票数 7
EN

Stack Overflow用户

发布于 2011-07-26 14:32:10

也许你可以试试这个:

代码语言:javascript
复制
$unique_id = substr(md5(uniqid(rand(), true)), 16, 16);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6826106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档