php生成随机数/生成随机字符串的方法小结【5种方法】


Posted in PHP onMay 27, 2020

本文实例讲述了php生成随机数/生成随机字符串的方法。分享给大家供大家参考,具体如下:

有时候我们的项目需要生成随机数,但是又不想那么麻烦,那么我们可以使用下面这5种方法生成。

第一种:mt_rand()

<?php
function GetRandStr($length){
 //字符组合
 $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
 $len = strlen($str)-1;
 $randstr = '';
 for ($i=0;$i<$length;$i++) {
  $num=mt_rand(0,$len);
  $randstr .= $str[$num];
 }
 return $randstr;
}

//传入长度
$number = GetRandStr(6);
echo $number;
?>

第二种:array_rand()数组

<?php
function make_password($length)
{
 // 密码字符集,可任意添加你需要的字符
 $str = 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');
 // 在 $str 中随机取 $length 个数组元素键名
 $keys = array_rand($str, $length); 
 $password = '';
 for($i = 0; $i < $length; $i++)
 {
  // 将 $length 个数组元素连接成字符串
  $password .= $str[$keys[$i]];
 }
 return $password;
}
echo make_password(6);
?>

第三种:把字符串打乱,然后返回其中的一小截

<?php
function getrandstr($length){
 $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
 $randStr = str_shuffle($str);//打乱字符串
 $rands= substr($randStr,0,$length);//substr(string,start,length);返回字符串的一部分
 return $rands;
}
echo getrandstr(6);
?>

第四种:返回任意随机数

<?php
//返回1000-9999其中的一个随机数
echo rand(1000,9999);
?>

第五种:对时间戳进行MD5加密,截取其中一部分

<?php
function token($length){
 $str = md5(time());
 $token = substr($str,5,$length);
 return $token;
}
echo token(6);
?>

5种方法,任你选择,当然还有很多方法,例如多个字符串进行拼接,最后做md5加密或SHA1加密,然后返回字符串,这种比较普遍用于token验证或签名验证。

PHP 相关文章推荐
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
Feb 24 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
PHP中require和include路径问题详解
Dec 25 PHP
smarty模板引擎之配置文件数据和保留数据
Mar 30 PHP
PHP程序员不应该忽略的3点
Oct 09 PHP
php中的抽象方法和抽象类
Feb 14 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 #PHP
php与阿里云短信接口接入操作案例分析
May 27 #PHP
PHP开发API接口签名生成及验证操作示例
May 27 #PHP
php+websocket 实现的聊天室功能详解
May 27 #PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 27 #PHP
PHP code 验证码生成类定义和简单使用示例
May 27 #PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
May 26 #PHP
You might like
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php 过滤器实现代码
2010/08/09 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
python利用beautifulSoup实现爬虫
2014/09/29 Python
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python3的socket使用方法详解
2020/02/18 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
2014/05/08 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
电厂职工自我鉴定
2014/02/20 职场文书
2014年信访工作总结
2014/11/17 职场文书