简单的生成随机字符串:

  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. }

PHP中生成随机字符串,数字+大小写字母随机组合的更多相关文章

  1. PHP生成随机字符串包括大小写字母

    PHP生成随机字符串包括大小写字母,这里介绍两种方法: 第一种:利用字符串函数操作 <?php /** *@blog <www.phpddt.com> */ function cre ...

  2. Java生成固定长度的随机字符串(以大小写字母和数字)

    package org.jimmy.autosearch2019.test; import java.util.ArrayList; import java.util.Random; /** * @a ...

  3. Upcase 将edit1中的每个字符串改为首字母大写

    //将edit1中的每个字符串改为首字母大写 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);begin    with ...

  4. 随机总数字里面选取随机数字进行随机排序案例(JAVA实现)

    随机总数字里面选取随机数字进行随机排序案例,案例如下: 代码code: package com.sec; import java.util.Arrays; import java.util.Scann ...

  5. JS生成1000个数字加字母的不重复的随机字符串

    周五,快下班了,正收拾东西准备走人,项目经理突然让我给他做个Excel,1000个数字加字母组合的密码,不重复,下班前给. 我直接懵了,Excel不会,估计是要写个什么命令才能生成出来,于是想着有没有 ...

  6. php---------正则判断字符串中是否由汉字 数字 英文字母组成

    开发中常常用到正则表达式,分享两个常用的正则表达式,php检查字符串是否由汉字,数字,英文字母,下划线组成, 注意这里只是针对utf-8字符集的字符串检查. 数字 汉字 英文字母: if (!preg ...

  7. javascript 字符串 数字反转 字母大小写互换

    // 符串abcd123ABCD456 怎么转换为 ABCD321abcd654 // 数字要倒序 小写转大写, 大写转小写 Array.prototype.reverse = function() ...

  8. 利用PinYin4j 实现List中的对象按数字,字母, 汉字排序

    要排序的对象: import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPi ...

  9. php 生成随机字符串,数字,大写字母,小写字母,特殊字符可以随意组合

    * 生成随机字符串* @param int       $length  要生成的随机字符串长度* @param string    $type    随机码类型:0,数字+大小写字母:1,数字:2, ...

随机推荐

  1. subprocess之check_out用法

    在python3中使用subprocess的check_out方法时,因为该输出为byte类型,所以如果要查看具体的内容时需要进行转码,如果转码不对话,会影响内容输出的可读性,如下: #1,输出解码不 ...

  2. http并发访问模型(2)

    目录 http并发 并发访问模型 响应流程 从IO的角度看待响应 从函数的角度看待响应 日志处理 我叫张贺,贪财好色.一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网 ...

  3. ReactNative: 使用尺寸类Dimensions获取屏幕尺寸

    一.简介 在前面创建使用组件时,虽然使用的都是伸缩盒子布局,但是很少使用宽高来进行绝对定位.在iOS中可以通过UIScreen控件获取当前屏幕的宽高,同样地,在RN中提供了一个尺寸组件Dimensio ...

  4. python的安装以及前景

    1.检查软件是否安装:在cmd命令行上输oython 假如环境已经配置好环境变量 则会显示为python的inf: 2.下载并安装python 打开python官网:https://www.pytho ...

  5. Web安全测试学习笔记-DVWA-SQL注入-1

    SQL注入的定义网上很多,作为一个初学者,我对SQL注入的理解是这样的:网站应用一般都有后台数据库(不论是关系型还是非关系型),用户在网站上的绝大部分操作,最终都会跟数据库交互(也就是执行一串SQL语 ...

  6. IMP-00009: abnormal end of export file解决方案

    一.概述 最近在测试环境的一个oracle数据库上面,使用exp将表导出没有问题,而将导出的文件使用imp导入时却出现了如下错误. IMP-00009: abnormal end of export ...

  7. Excel的创建和读取NPOI

    项目中经常用到需要操作Excel文件,例如:导出数据库中的数据,读取数据等.但是电脑又没有安装office,不能直接调用微软的库,最后经过查找,找到这样的一个不用安装office的库.一个.NET库, ...

  8. Selenium(十):用By定位元素、鼠标事件、键盘事件

    1. 用By定位元素 除了前面介绍的单位方法,WebDriver还提供了另外一套写法,即统一调用find_element()方法,通过By来声明定位的方法,并且传入对应定位方法的定位参数.具体如下: ...

  9. 需要知道的jQuery对象和DOM对象之间的转换

    jQuery对象和DOM对象之间的转换 jQuery对象就是通过jQuery包装DOM对象后产生的对象. jQuery对象和DOM对象不能互相调用对方的方法或属性,但它们之间可以进行转换. 两者都无法 ...

  10. opencv-python 图像基础处理(二)

    图像阈值 ret, dst = cv2.threshold(src, thresh, maxval, type) - src: 输入图,只能输入单通道图像,通常来说为灰度图- dst: 输出图- th ...