请选择 进入手机版 | 继续访问电脑版
绿茶科技社区
简单的生成随机字符串:
  1. /*
  2.      *  生成随机字符串
  3.      *
  4.      *   $length    字符串长度
  5.      */
  6.     function random_str($length) {
  7.         // 密码字符集,可任意添加你需要的字符
  8.         $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  9.         $str = '';
  10.         for($i = 0; $i < $length; $i++)
  11.         {
  12.             // 这里提供两种字符获取方式
  13.             // 第一种是使用 substr 截取$chars中的任意一位字符;
  14.             // 第二种是取字符数组 $chars 的任意元素
  15.             $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
  16. //            $str .= $chars[mt_rand(0, strlen($chars) - 1)];
  17.         }
  18.         return $str;
  19.     }
复制代码
了解原理后可以扩展一下:
  1. /**
  2. * 生成随机字符串,数字,大小写字母随机组合
  3. *
  4. * @param int $length  长度
  5. * @param int $type    类型,1 纯数字,2 纯小写字母,3 纯大写字母,4 数字和小写字母,5 数字和大写字母,6 大小写字母,7 数字和大小写字母
  6. */
  7. function random($length = 6, $type = 1)
  8. {
  9.     // 取字符集数组
  10.     $number = range(0, 9);
  11.     $lowerLetter = range('a', 'z');
  12.     $upperLetter = range('A', 'Z');
  13.     // 根据type合并字符集
  14.     if ($type == 1) {
  15.         $charset = $number;
  16.     } elseif ($type == 2) {
  17.         $charset = $lowerLetter;
  18.     } elseif ($type == 3) {
  19.         $charset = $upperLetter;
  20.     } elseif ($type == 4) {
  21.         $charset = array_merge($number, $lowerLetter);
  22.     } elseif ($type == 5) {
  23.         $charset = array_merge($number, $upperLetter);
  24.     } elseif ($type == 6) {
  25.         $charset = array_merge($lowerLetter, $upperLetter);
  26.     } elseif ($type == 7) {
  27.         $charset = array_merge($number, $lowerLetter, $upperLetter);
  28.     } else {
  29.         $charset = $number;
  30.     }
  31.     $str = '';
  32.     // 生成字符串
  33.     for ($i = 0; $i < $length; $i++) {
  34.         $str .= $charset[mt_rand(0, count($charset) - 1)];
  35.         // 验证规则
  36.         if ($type == 4 && strlen($str) >= 2) {
  37.             if (!preg_match('/\d+/', $str) || !preg_match('/[a-z]+/', $str)) {
  38.                 $str = substr($str, 0, -1);
  39.                 $i = $i - 1;
  40.             }
  41.         }
  42.         if ($type == 5 && strlen($str) >= 2) {
  43.             if (!preg_match('/\d+/', $str) || !preg_match('/[A-Z]+/', $str)) {
  44.                 $str = substr($str, 0, -1);
  45.                 $i = $i - 1;
  46.             }
  47.         }
  48.         if ($type == 6 && strlen($str) >= 2) {
  49.             if (!preg_match('/[a-z]+/', $str) || !preg_match('/[A-Z]+/', $str)) {
  50.                 $str = substr($str, 0, -1);
  51.                 $i = $i - 1;
  52.             }
  53.         }
  54.         if ($type == 7 && strlen($str) >= 3) {
  55.             if (!preg_match('/\d+/', $str) || !preg_match('/[a-z]+/', $str) || !preg_match('/[A-Z]+/', $str)) {
  56.                 $str = substr($str, 0, -2);
  57.                 $i = $i - 2;
  58.             }
  59.         }
  60.     }
  61.     return $str;
  62. }
复制代码


分享到 :
0 人收藏

3 个回复

倒序浏览
wolfy  高级会员 | 2019-10-15 07:26:19
有空一起交流一下
阿新  金牌会员 | 2019-10-16 23:05:13
打酱油的人拉,回复下赚取积分
旁观者  高级会员 | 2019-11-8 03:09:32
回个帖子,下班咯~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

举报|Archiver|手机版|小黑屋|Lvchakeji Inc.  

Powered by Discuz! X3.3 © 2001-2016 Comsenz Inc.

返回顶部