php获取随机字符串的⼏种⽅法
⽅法⼀:shuffle函数(打乱数组)和mt_rand函数(⽣成随机数,⽐rand速度快四倍) 1/**
2 * 获得随机字符串
3 * @param $len            需要的长度
4 * @param $special        是否需要特殊符号
5 * @return string      返回随机字符串
6*/
7function getRandomStr($len, $special=true){
8$chars = array(
9        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
10        "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
11        "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
12        "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
13        "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
14        "3", "4", "5", "6", "7", "8", "9"
15    );
16
17if($special){
18$chars = array_merge($chars, array(
19            "!", "@", "#", "$", "?", "|", "{", "/", ":", ";",
20            "%", "^", "&", "*", "(", ")", "-", "_", "[", "]",
21            "}", "<", ">", "~", "+", "=", ",", "."
22        ));
23    }
24
25$charsLen = count($chars) - 1;
26shuffle($chars);                            //打乱数组顺序
27$str = '';
28for($i=0; $i<$len; $i++){
29$str .= $chars[mt_rand(0, $charsLen)];    //随机取出⼀位
30    }
31return$str;
32 }
⽅法⼆、str_shuffle函数(打乱字符串顺序)和mt_rand函数
1//取随机10位字符串
2$strs="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
3$name=substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),10);
4echo$name;
⽅法三、md5(),uniqid(),microtime()⽣成唯⼀的32位字符串
$uniqid = md5(uniqid(microtime(true),true));
//microtime(true)  返回系统当前时间戳的毫秒数
其他⽅法:
1/**
2    * ⽅法⼀:获取随机字符串
3    * @param number $length 长度
4    * @param string $type 类型
5    * @param number $convert 转换⼤⼩写
6    * @return string 随机字符串
7*/
8function random($length = 6, $type = 'string', $convert = 0)
9    {
10$config = array(
11            'number' => '1234567890',
12            'letter' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
13            'string' => 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789',
14            'all' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
15        );
16
17if (!isset($config[$type]))
18$type = 'string';
19$string = $config[$type];
20
21$code = '';
22$strlen = strlen($string) - 1;
23for ($i = 0; $i < $length; $i++) {
24$code .= $string{mt_rand(0, $strlen)};
25        }
26if (!empty($convert)) {
27$code = ($convert > 0) ? strtoupper($code) : strtolower($code);
28        }
29return$code;
30    }
31
32/**
33    * ⽅法⼆:获取随机字符串
34    * @param int $randLength 长度
35    * @param int $addtime 是否加⼊当前时间戳
36    * @param int $includenumber 是否包含数字
37    * @return string
38*/
39function rand_str($randLength = 6, $addtime = 1, $includenumber = 0)
40    {
41if ($includenumber) {
42$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQEST123456789';
43        } else {
44$chars = 'abcdefghijklmnopqrstuvwxyz';
45        }
46$len = strlen($chars);
47$randStr = '';
48for ($i = 0; $i < $randLength; $i++) {
49$randStr .= $chars[mt_rand(0, $len - 1)];
50        }
51$tokenvalue = $randStr;
52if ($addtime) {
php 数组字符串转数组
53$tokenvalue = $randStr . time();
54        }
55return$tokenvalue;
56    }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。