首頁 >php教程 >php手册 >php随机生成字符串一些方法总结

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

WBOY
WBOY原創
2016-06-13 10:02:351239瀏覽

前面有讲过生成随机密码,下面我再来给大家介绍一些常用的生成随机字符串的函数吧,这些都是我们自定义的函数,当然也有系统自带函数了,不过都比较简单了。

mt_rand函数

例子

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

 代码如下 复制代码

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

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

 代码如下 复制代码

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         $output .= $chars[mt_rand(0, $charsLen)];
    }
   
    return $output;
}

$str = genRandomString(25);
$str .= "
";
$str .= genRandomString(25);
$str .= "
";
$str .= genRandomString(25);
$str .= "

";

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         $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 个数组元素连接成字符串
        $password .= $chars[$keys[$i]];
    }

    return $password;
}

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn