123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- <?php
- namespace fast;
- /**
- * 随机生成类
- */
- class Random
- {
- /**
- * 生成数字和字母
- *
- * @param int $len 长度
- * @return string
- */
- public static function alnum($len = 6)
- {
- return self::build('alnum', $len);
- }
- /**
- * 仅生成字符
- *
- * @param int $len 长度
- * @return string
- */
- public static function alpha($len = 6)
- {
- return self::build('alpha', $len);
- }
- /**
- * 生成指定长度的随机数字
- *
- * @param int $len 长度
- * @return string
- */
- public static function numeric($len = 4)
- {
- return self::build('numeric', $len);
- }
- /**
- * 生成指定长度的无0随机数字
- *
- * @param int $len 长度
- * @return string
- */
- public static function nozero($len = 4)
- {
- return self::build('nozero', $len);
- }
- /**
- * 能用的随机数生成
- * @param string $type 类型 alpha/alnum/numeric/nozero/unique/md5/encrypt/sha1
- * @param int $len 长度
- * @return string
- */
- public static function build($type = 'alnum', $len = 8)
- {
- switch ($type) {
- case 'alpha':
- case 'alnum':
- case 'numeric':
- case 'nozero':
- switch ($type) {
- case 'alpha':
- $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
- break;
- case 'alnum':
- $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
- break;
- case 'numeric':
- $pool = '0123456789';
- break;
- case 'nozero':
- $pool = '123456789';
- break;
- }
- return substr(str_shuffle(str_repeat($pool, ceil($len / strlen($pool)))), 0, $len);
- case 'unique':
- case 'md5':
- return md5(uniqid(mt_rand()));
- case 'encrypt':
- case 'sha1':
- return sha1(uniqid(mt_rand(), true));
- }
- }
- /**
- * 获取全球唯一标识
- * @return string
- */
- public static function 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, 0x0fff) | 0x4000,
- mt_rand(0, 0x3fff) | 0x8000,
- mt_rand(0, 0xffff),
- mt_rand(0, 0xffff),
- mt_rand(0, 0xffff)
- );
- }
- }
|