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 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
php使用cookie保存登录用户名的方法
Jan 26 PHP
PHP实现linux命令tail -f
Feb 22 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 PHP
CI(CodeIgniter)框架实现图片上传的方法
Mar 24 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 13 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
基于PHP微信红包的算法探讨
2016/07/21 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
three.js实现圆柱体
2018/12/30 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python 解析XML文件
2009/04/15 Python
详解python3中socket套接字的编码问题解决
2017/07/01 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
如何判断计算机可能已经中马
2013/03/22 面试题
关爱留守儿童倡议书
2014/04/15 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
公司员工培训管理制度
2015/08/04 职场文书
同学会演讲稿
2019/04/02 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
Python基于Opencv识别两张相似图片
2021/04/25 Python
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python