zoukankan      html  css  js  c++  java
  • php获取随机字符串的几种方法

    方法一:shuffle函数(打乱数组)和mt_rand函数(生成随机数,比rand速度快四倍)

     1 /**
     2  * 获得随机字符串
     3  * @param $len             需要的长度
     4  * @param $special        是否需要特殊符号
     5  * @return string       返回随机字符串
     6  */
     7 function getRandomStr($len, $special=true){
     8     $chars = array(
     9         "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
    10         "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
    11         "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
    12         "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
    13         "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
    14         "3", "4", "5", "6", "7", "8", "9"
    15     );
    16 
    17     if($special){
    18         $chars = array_merge($chars, array(
    19             "!", "@", "#", "$", "?", "|", "{", "/", ":", ";",
    20             "%", "^", "&", "*", "(", ")", "-", "_", "[", "]",
    21             "}", "<", ">", "~", "+", "=", ",", "."
    22         ));
    23     }
    24 
    25     $charsLen = count($chars) - 1;
    26     shuffle($chars);                            //打乱数组顺序
    27     $str = '';
    28     for($i=0; $i<$len; $i++){
    29         $str .= $chars[mt_rand(0, $charsLen)];    //随机取出一位
    30     }
    31     return $str;
    32 }

    方法二、str_shuffle函数(打乱字符串顺序)和mt_rand函数

    1 //取随机10位字符串
    2 $strs="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
    3 $name=substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),10);
    4 echo $name;

    方法三、md5(),uniqid(),microtime()生成唯一的32位字符串

    $uniqid = md5(uniqid(microtime(true),true));
    //microtime(true)  返回系统当前时间戳的毫秒数

    其他方法:

     1 /**
     2      * 方法一:获取随机字符串
     3      * @param number $length 长度
     4      * @param string $type 类型
     5      * @param number $convert 转换大小写
     6      * @return string 随机字符串
     7      */
     8     function random($length = 6, $type = 'string', $convert = 0)
     9     {
    10         $config = array(
    11             'number' => '1234567890',
    12             'letter' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
    13             'string' => 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789',
    14             'all' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
    15         );
    16  
    17         if (!isset($config[$type]))
    18             $type = 'string';
    19         $string = $config[$type];
    20  
    21         $code = '';
    22         $strlen = strlen($string) - 1;
    23         for ($i = 0; $i < $length; $i++) {
    24             $code .= $string{mt_rand(0, $strlen)};
    25         }
    26         if (!empty($convert)) {
    27             $code = ($convert > 0) ? strtoupper($code) : strtolower($code);
    28         }
    29         return $code;
    30     }
    31  
    32     /**
    33      * 方法二:获取随机字符串
    34      * @param int $randLength 长度
    35      * @param int $addtime 是否加入当前时间戳
    36      * @param int $includenumber 是否包含数字
    37      * @return string
    38      */
    39     function rand_str($randLength = 6, $addtime = 1, $includenumber = 0)
    40     {
    41         if ($includenumber) {
    42             $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQEST123456789';
    43         } else {
    44             $chars = 'abcdefghijklmnopqrstuvwxyz';
    45         }
    46         $len = strlen($chars);
    47         $randStr = '';
    48         for ($i = 0; $i < $randLength; $i++) {
    49             $randStr .= $chars[mt_rand(0, $len - 1)];
    50         }
    51         $tokenvalue = $randStr;
    52         if ($addtime) {
    53             $tokenvalue = $randStr . time();
    54         }
    55         return $tokenvalue;
    56     }
  • 相关阅读:
    【题解】2020 年电子科技大学 ACMICPC 暑假前集训 数据结构
    【逆向】某触控板驱动分析过程
    SME 2019 ACM 题解
    数据结构 & 算法模板汇总
    VS2010win32下cocos2dx控制台打印的方法
    CDMA写码与鉴权(转载)
    mapxtreme开发小结2(c#)
    LONG GetWindowLong函数功能
    无边框的对话框的大小拖动实现
    YUV介绍
  • 原文地址:https://www.cnblogs.com/myIvan/p/9533189.html
Copyright © 2011-2022 走看看