PHP如何生成一个随机的、唯一的、字母数字字符串

时间:2018-08-09
本文章向大家介绍php如何生成一个随机的、唯一的、字母数字字符串,本文章介绍了多种方法,可以任选一种,需要的朋友可以参考一下。

如何使用数字和字母生成随机的唯一字符串以用于验证链接?就像您在网站上创建一个帐户一样,它会向您发送一封带有链接的电子邮件,您必须单击该链接才能验证您的帐户...是的......其中一个。

如何使用PHP生成其中一个?

第一种方法:使用php uniqid:

md5(uniqid(rand(), true))

第二种方法:自定义函数。

function random_string($length) {
    $key = '';
    $keys = array_merge(range(0, 9), range('a', 'z'));

    for ($i = 0; $i < $length; $i++) {
        $key .= $keys[array_rand($keys)];
    }

    return $key;
}

echo random_string(50);

第三种方法:使用php mt_rand

您可以使用UUID(通用唯一标识符),它可以用于任何目的,从用户身份验证字符串到支付交易ID。

UUID是16个八位字节(128位)的数字。在其规范形式中,UUID由32个十六进制数字表示,显示在由连字符分隔的五个组中,格式为8-4-4-4-12,总共36个字符(32个字母数字字符和四个连字符)。

function generate_uuid() {
    return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
        mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
        mt_rand( 0, 0xffff ),
        mt_rand( 0, 0x0C2f ) | 0x4000,
        mt_rand( 0, 0x3fff ) | 0x8000,
        mt_rand( 0, 0x2Aff ), mt_rand( 0, 0xffD3 ), mt_rand( 0, 0xff4B )
    );

}

//调用函数

$transationID = generate_uuid();

一些示例输出将如下:

E302D66D-87E3-4450-8CB6-17531895BF14
22D288BC-7289-442B-BEEA-286777D559F2
51B4DE29-3B71-4FD2-9E6C-071703E1FF31
3777C8C6-9FF5-4C78-AAA2-08A47F555E81
54B91C72-2CF4-4501-A6E9-02A60DCBAE4C
60F75C7C-1AE3-417B-82C8-14D456542CD7
8DE0168D-01D3-4502-9E59-10D665CEBCB2