PHP开发小技巧④—两种方法实现获取随机字符串

来源:互联网 发布:软件可靠性定义 编辑:程序博客网 时间:2024/05/21 04:17
获取随机字符串的方法很多,只要自己的算法设计的比较好,就可以很方便快速的得到自己想要的结果。获取随机字符串在我们的日常工作编程中也用到的很多,例如:登录时要输入的验证码,发送手机短信验证的验证码,以及在我们生成订单的时候为了防止订单号码重复,我们会在固有的单号之后再加上一串随机字符串,增加其号码不会重复的保障,等等。其实只要是对编程有了解的人都知道,没有什么真正的随机,所有的都能找到其规律,只是难以与否的问题,这个就不多说了。

        我这里研究写了两个生成随机字符串的方法,各有其优缺点,主要是与大家共同学习进步,如果有好的意见建议,欢迎留言提出。下面的就不多说了,代码比较简单,主要的是提供一种思路或是方法,大家可以直接读代码:

[php] view plain copy 在CODE上查看代码片派生到我的代码片
  1. <?php  
  2.   
  3. /** 
  4.  * ======================================= 
  5.  * Created by Zhihua_W. 
  6.  * Author: Zhihua_W 
  7.  * Date: 2016/12/1 0004 
  8.  * Time: 下午 5:15 
  9.  * Project: PHP开发小技巧 
  10.  * Power: 两种方法实现获取随机字符串 
  11.  * ======================================= 
  12.  */  
  13.   
  14. /** 
  15.  * 方法一:获取随机字符串 
  16.  * @param number $length 长度 
  17.  * @param string $type 类型 
  18.  * @param number $convert 转换大小写 
  19.  * @return string 随机字符串 
  20.  */  
  21. function random($length = 6, $type = 'string'$convert = 0)  
  22. {  
  23.     $config = array(  
  24.         'number' => '1234567890',  
  25.         'letter' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',  
  26.         'string' => 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789',  
  27.         'all' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'  
  28.     );  
  29.   
  30.     if (!isset($config[$type]))  
  31.         $type = 'string';  
  32.     $string = $config[$type];  
  33.   
  34.     $code = '';  
  35.     $strlen = strlen($string) - 1;  
  36.     for ($i = 0; $i < $length$i++) {  
  37.         $code .= $string{mt_rand(0, $strlen)};  
  38.     }  
  39.     if (!empty($convert)) {  
  40.         $code = ($convert > 0) ? strtoupper($code) : strtolower($code);  
  41.     }  
  42.     return $code;  
  43. }  
  44.   
  45. /** 
  46.  * 方法二:获取随机字符串 
  47.  * @param int $randLength 长度 
  48.  * @param int $addtime 是否加入当前时间戳 
  49.  * @param int $includenumber 是否包含数字 
  50.  * @return string 
  51.  */  
  52. function rand_str($randLength = 6, $addtime = 1, $includenumber = 0)  
  53. {  
  54.     if ($includenumber) {  
  55.         $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQEST123456789';  
  56.     } else {  
  57.         $chars = 'abcdefghijklmnopqrstuvwxyz';  
  58.     }  
  59.     $len = strlen($chars);  
  60.     $randStr = '';  
  61.     for ($i = 0; $i < $randLength$i++) {  
  62.         $randStr .= $chars[rand(0, $len - 1)];  
  63.     }  
  64.     $tokenvalue = $randStr;  
  65.     if ($addtime) {  
  66.         $tokenvalue = $randStr . time();  
  67.     }  
  68.     return $tokenvalue;  
  69. }  
  70.   
  71. //其中也可以放多个参数  
  72. //random(4,'number');  
  73. //random(6,'letter',1);  
  74. echo random(10);  
  75. //方法二同样  
  76. echo rand_str(6);  
  77.   
  78. ?>  

        关于打印结果在这里就不再贴上来了,比较简单。

阅读全文
0 0