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脚本的10个技巧(5)
Oct 09 PHP
常见的PHP五种设计模式小结
Mar 23 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
排序算法之PHP版快速排序、冒泡排序
Apr 09 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
php根据日期或时间戳获取星座信息和生肖等信息
Oct 20 PHP
Linux系统中为php添加pcntl扩展
Aug 28 PHP
PHP通过引用传递参数用法分析
Dec 01 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 PHP
PHP如何实现订单的延时处理详解
Dec 30 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
Apr 09 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 获取ip地址代码汇总
2015/07/05 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
党员教师批评与自我批评发言稿
2014/10/15 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
基石观后感
2015/06/12 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
数据设计之权限的实现
2022/08/05 MySQL