php随机生成字符串一些方法总结

mt_rand函数

例子

在本例中,我们会返回一些随机数:

 代码如下 复制代码

<?php
echo(mt_rand());
echo(mt_rand());
echo(mt_rand(10,100));
?>
输出类似:

3150906288
513289678
35

下面我们来看看mt_rand函数的实例吧。

 代码如下 复制代码

function roll () {
  return mt_rand(1,6);
  }

echo roll();

function roll ($sides) {
  return mt_rand(1,$sides);

}
  echo roll(6); // roll a six-sided die
  echo roll(10); // roll a ten-sided die
  echo roll(20); // roll a twenty-sided die

上面都只能生成简单的纯数字,不能是字母或数字与字母的,下面我们需用到自定义函数了

 代码如下 复制代码

<?php
function genRandomString($len) {
    $chars = array(
        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
        "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
        "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
        "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
        "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
        "3", "4", "5", "6", "7", "8", "9"
    );

    $charsLen = count($chars) - 1;

    shuffle($chars); // 将数组打乱
   
    $output = "";
    for ($i=0; $i<$len; $i++) {
        $output .= $chars[mt_rand(0, $charsLen)];
    }
   
    return $output;
}

$str = genRandomString(25);
$str .= "<br />";
$str .= genRandomString(25);
$str .= "<br />";
$str .= genRandomString(25);
$str .= "<br /><br />";

echo $str;
?>

程序输出如下:

DmLVAmDkEJz8wHXRCNwzvANlB
BILZSA19YyuSVcR17KrrZsOKO
inlWlQF0GSabN3l589y9s16Gg

默认生成的随机字符串长度为5,生成的字符串包含:数字+大写字母

函数功能:

1、生成指定长度的随机字符串

2、灵活选择生成的随机字符串的复杂度

 代码如下 复制代码

/**
  +----------------------------------------------------------
 * 生成随机字符串
  +----------------------------------------------------------
 * @param int       $length  要生成的随机字符串长度
 * @param string    $type    随机码类型:0,数字+大写字母;1,数字;2,小写字母;3,大写字母;4,特殊字符;-1,数字+大小写字母+特殊字符
  +----------------------------------------------------------
 * @return string
  +----------------------------------------------------------
 */
function randCode($length = 5, $type = 0) {
    $arr = array(1 => "0123456789", 2 => "abcdefghijklmnopqrstuvwxyz", 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 4 => "~@#$%^&*(){}[]|");
    if ($type == 0) {
        array_pop($arr);
        $string = implode(",", $arr);
    } else if ($type == "-1") {
        $string = implode(",", $arr);
    } else {
        $string = $arr[$type];
    }
    $count = strlen($string) - 1;
    for ($i = 0; $i < $length; $i++) {
        $str[$i] = $string[rand(0, $count)];
        $code .= $str[$i];
    }
    return $code;
}

1、预置一个的字符数组 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字符
     2、通过array_rand()从数组 $chars 中随机选出 $length 个元素
     3、根据已获取的键名数组 $keys,从数组 $chars 取出字符拼接字符串。该方法的缺点是相同的字符不会重复取。

 代码如下 复制代码

function make_password( $length = 8 )
{
    // 密码字符集,可任意添加你需要的字符
    $chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
    'i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r', 's',
    't', 'u', 'v', 'w', 'x', 'y','z', 'A', 'B', 'C', 'D',
    'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O',
    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z',
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!',
    '@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_',
    '[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',',
    '.', ';', ':', '/', '?', '|');

    // 在 $chars 中随机取 $length 个数组元素键名
    $keys = array_rand($chars, $length);

    $password = '';
    for($i = 0; $i < $length; $i++)
    {
        // 将 $length 个数组元素连接成字符串
        $password .= $chars[$keys[$i]];
    }

    return $password;
}

时间: 2024-09-23 17:51:36

php随机生成字符串一些方法总结的相关文章

php随机生成字符串程序方法总结

随机生成数数字 mt_rand()函数  代码如下 复制代码 $num = mt_rand(0,9999999); 但如果我想随机生成字符串怎么操作,网站找到一个方法.  代码如下 复制代码 function random($length) {      srand(date("s"));      $possible_charactors = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";      $string = "

string-随机生成字符串的方法 求解释

问题描述 随机生成字符串的方法 求解释 //产生长度为length的随机字符串 char* genRandomString(int length) { int flag i; char* string; srand((unsigned) time(NULL )); if ((string = (char*) myMalloc(length)) == NULL ) { myLog(""Malloc failed!flag:14 ""); return NULL ; }

java 怎么随机生成字符串显示在jsp页面上

问题描述 java 怎么随机生成字符串显示在jsp页面上 如上我要点击一个按钮生成一个随机的用户, 用户账号是一个随机的字符串,我还需要获得产生随机的次数,来统计 解决方案 1.直接用random生成数字,然后把数字拼接 2.创建字符数组,然后random出数字,获取对应数字下标的字符,再拼接 解决方案二: 一种是楼上说的方法,另一种就是你要记录次数,用数据库来生成 解决方案三: 用UUID生成,存进数据库,在数据库中统计次数 解决方案四: 你字符串要什么格式的(汉字,英文大小写,数字,特殊符号

ASP随机生成汉字的方法

ASP随机生成汉字的方法 <%Dim i     Dim j     Dim HS     Dim HE     Dim LS     Dim LE     dim Result     Result=""     HS = 177     HE = 247     LS = 161     LE = 254     dim Max_Num     Max_num=65536     Randomize       For i = 1 To 4 temp1=dec2bin(Int

Android编程实现随机生成颜色的方法示例

本文实例讲述了Android编程实现随机生成颜色的方法.分享给大家供大家参考,具体如下: 网上有个ColorPicker开源项目,选择颜色值.而在这里我想实现的是动态修改一个view的背景色. 开一个线程,每隔1s修改一次view的背景色. 我们知道在Android里设置一个view的背景色有 framelayout.setBackgroundColor(Color.parseColor("#"+arg0.obj)); 就是用android的Color类去解析一个带#号的十六进制色值.

java随机生成字符串(字符随机生成类 生成随机字符组合)_java

复制代码 代码如下: package com.phyl.password; import java.util.ArrayList;import java.util.Arrays;import java.util.Random;/** * 字符随机生成类 * @author ASUS * */public class PassWord {  /**  * 密码类型枚举  * @author ASUS  */ public static enum TYPE {  /**   * 字符型   */  

Java随机生成数字的方法

1.创建Random类型的对象: Random random = new Random(); Random random = new Random(10010010); 以上两种是创建Random对象的方式,第一种使用默认构造方法,和以下的代码作用完全等价: Random random = new Random(System. currentTimeMillis()); 相当与使用当前时间作为种子数字来进行创建. 第二种方式通过自己来指定种子数字来进行创建. 大家可以根据需要使用以上两种方式的任

php随机生成字符串与随机读取字符串

function readable_random_string($length = 6){ $conso=array("b","c","d","f","g","h","j","k","l", "m","n","p","r","s"

MySQL中随机生成固定长度字符串的方法_Mysql

要随机生成字符串代码如下: 在MySQL中定义一个随机串的方法,然后再SQL语句中调用此方法. 随机串函数定义方法: 复制代码 代码如下: CREATE DEFINER=`root`@`localhost` FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET latin1 BEGIN DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGH