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     }

原文地址:https://www.cnblogs.com/myIvan/p/9533189.html

时间: 2024-10-12 09:24:55

php获取随机字符串的几种方法的相关文章

Java中获取键盘输入值的三种方法

Java中获取键盘输入值的三种方法     Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧: 以下将列出几种方法: 方法一:从控制台接收一个字符,然后将其打印出来 import java.io.*; public static void main(String [] args) throws

java小知识点(一)---Java中获取键盘输入值的三种方法

Java中获取键盘输入值的三种方法   程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧:   以下将列出几种方法:   方法一:从控制台接收一个字符,然后将其打印出来   publicstatic void main(String [] args) throws IOException{   Sys

js+jquery动态设置/增加/删除/获取元素属性的两种方法集锦对比(动态onclick属性设置+动态title设置)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html140/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>

jQuery -&gt; 获取后代元素的三种方法

如果我们有内容如下的html文件,那么如何选取包含在<p>元素内的<i>元素呢? 邪馬台国の謎と弥生時代 紀元前1000年ごろ.水稲工作の技術をもつ集団が大挙して日本に移住してきた.これによって弥生時代が始まった. 縄文人も南方から伝わった稲を栽培していたが.彼らは原野を開いて大掛かりな水田をつくる発想を持たなかった.しかし.北九州に新たな文化を持って集団が来たのを知った彼らは次第に.水稲工作を受け入れ弥生人へとか分かっていた. html源码如下 <h1>邪馬台国の謎と

高并发下获取随机字符串

#region 获取随机字符串 //digit 最终返回的字符串的长度 public static string BuildCode(int digit) { StringBuilder resultCode = new StringBuilder(); Random ran = new Random(GetRandomSeed()); for (int i = 0; i < digit; i++) { resultCode.Append(("0123456789").Subst

C#获取MAC地址的几种方法

首先需要用到的一些方法和类: public enum NCBCONST { NCBNAMSZ = 16, MAX_LANA = 254, NCBENUM = 0x37, NRC_GOODRET = 0x00, NCBRESET = 0x32, NCBASTAT = 0x33, NUM_NAMEBUF = 30, } [StructLayout(LayoutKind.Sequential)] public struct ADAPTER_STATUS { [MarshalAs(UnmanagedTy

PHP获取POST数据的几种方法

一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname'];说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据解释:也就是表单POST过来的数据 方法2.file_get_contents("php://input");说明:允许读取 POST 的原始数据.和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置.p

获取body标签的两种方法

获取body标签的两种方法 引用body标签有两做法: 第一种:使用DOM Core 即引用某个给定文档的第一个(也是仅有的一个)body标签 代码如下: document.getElementsByTagName("body")[0] 第二种:使用HTML-DOM,即引用某个给定文档的body属性: 代码如下: doucumnet.body

PHP获取POST数据的几种方法汇总

一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urlencoded提交的数据解释:也就是表单POST过来的数据 方法2.file_get_contents("php://input"); 说明:允许读取 POST 的原始数据.和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置