php怎么生成6位随机数?

php怎么生成6位随机数?,第1张

通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度。代码如下:
function randomkeys($length)
{
$pattern = '1234567890abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLOMNOPQRSTUVWXYZ,/&l
t;>;#:@~[]{}-_=+)(&^%___FCKpd___0pound;"!'; //字符池
for($i=0;$i<$length;$i++)
{
$key = $pattern{mt_rand(0,35)}; //生成php随机数
}
return $key;
}
echo randomkeys(8);
这个php随机函数能生成XC=z~7L这样的字符串,随机!

另一种用PHP生成随机数的方法:利用chr()函数,省去创建字符池的步骤。代码如下:
function randomkeys($length)
{
$output='';
for ($a = 0; $a < $length; $a++) {
$output = chr(mt_rand(33, 126)); //生成php随机数
}
return $output;
}
echo randomkeys(8);
在第二个php随机函数里,先用mt_rand()生成一个介于33到126之间的php随机数,然后用chr()函数转化成字符。查看ascii码表就会发现,33到126代表的正是第一个函数中字符池里的所有字符。第二个函数和第一个函数功能相同,而且更简洁。

natsort() 函数用自然顺序算法对给定数组中的元素排序。
natsort() 函数实现了“自然排序”,即数字从 1 到 9 的排序方法,字母从 a 到 z 的排序方法,短者优先。数组的索引与单元值保持关联。
如果成功,则该函数返回 TRUE,否则返回 FALSE。

/
  检测密码是否符合要求
  规则: 小写字母,大写字母,数字这三种字符任意组合且长度在6到16位之间
 
  @param string $password 密码
  @return bool 是否通过(true-通过,false-不通过)
 /
function checkPassword($password){
return preg_match('/^([a-zA-Z0-9]+){6,16}$/', $password);
}

php生成6位不重复的字符串,用到的工具:notepad++,步骤如下:

php代码部分:

<php
echo "刷新输出不同的六个字符组合:"substr(md5(microtime(true)), 0, 6);
>

说明:此函数先获取当前时间,然后通过md5进行加密,然后再通过substr截取六位数,当前时间是不会重复的,从而保证生成的六个字符串永远不会重复。

效果图:

注意事项:此代码必须在php环境下运行。

[0-9A-Za-Z]{1,2}

[0-9]匹配0到9的数字
[A-Z]匹配A到Z的大写字母
[a-z]匹配a-z的小写字母
[0-9A-Za-z] 匹配数字和字母
[0-9A-Za-z]{1,2}匹配数字和字母1到2个。
1表示至少匹配1个。
2表示最多匹配2个。

一、校验数字的表达式 

1 数字:

^[0-9]$

2 n位的数字:

^\d{n}$

3 至少n位的数字:

^\d{n,}$

4 m-n位的数字:

^\d{m,n}$

5 零和非零开头的数字:

^(0|[1-9][0-9])$

6 非零开头的最多带两位小数的数字:

^([1-9][0-9])+([0-9]{1,2})$

7 带1-2位小数的正数或负数:

^(\-)\d+(\\d{1,2})$

8 正数、负数、和小数:

^(\-|\+)\d+(\\d+)$

9 有两位小数的正实数:

^[0-9]+([0-9]{2})$

10 有1~3位小数的正实数:

^[0-9]+([0-9]{1,3})$

11 非零的正整数:

^[1-9]\d$ 或 ^([1-9][0-9]){1,3}$ 或 ^\+[1-9][0-9]$

12 非零的负整数:

^\-[1-9][]0-9"$ 或 ^-[1-9]\d$

13 非负整数:

^\d+$ 或 ^[1-9]\d|0$

14 非正整数:

^-[1-9]\d|0$ 或 ^((-\d+)|(0+))$

15 非负浮点数:

^\d+(\\d+)$ 或 ^[1-9]\d\\d|0\\d[1-9]\d|0\0+|0$

16 非正浮点数:

^((-\d+(\\d+))|(0+(\0+)))$ 或 ^(-([1-9]\d\\d|0\\d[1-9]\d))|0\0+|0$

17 正浮点数:

^[1-9]\d\\d|0\\d[1-9]\d$ 或 ^(([0-9]+\[0-9][1-9][0-9])|([0-9][1-9][0-9]\[0-9]+)|([0-9][1-9][0-9]))$

18 负浮点数:

^-([1-9]\d\\d|0\\d[1-9]\d)$ 或 ^(-(([0-9]+\[0-9][1-9][0-9])|([0-9][1-9][0-9]\[0-9]+)|([0-9][1-9][0-9])))$

19 浮点数:

^(-\d+)(\\d+)$ 或 ^-([1-9]\d\\d|0\\d[1-9]\d|0\0+|0)$

二、校验字符的表达式

1 汉字:

^[\u4e00-\u9fa5]{0,}$

2 英文和数字:

^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

3 长度为3-20的所有字符:

^{3,20}$

4 由26个英文字母组成的字符串:

^[A-Za-z]+$

5 由26个大写英文字母组成的字符串:

^[A-Z]+$

6 由26个小写英文字母组成的字符串:

^[a-z]+$

7 由数字和26个英文字母组成的字符串:

^[A-Za-z0-9]+$

8 由数字、26个英文字母或者下划线组成的字符串:

^\w+$ 或 ^\w{3,20}$

9 中文、英文、数字包括下划线:

^[\u4E00-\u9FA5A-Za-z0-9_]+$

10 中文、英文、数字但不包括下划线等符号:

^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

11 可以输入含有^%&',;=$\"等字符:

[^%&',;=$\x22]+

12 禁止输入含有~的字符:

[^~\x22]+

三、特殊需求表达式

1、 Email地址:

^\w+([-+]\w+)@\w+([-]\w+)\\w+([-]\w+)$

2 、域名:

[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/

3 、InternetURL:

[a-zA-z]+://[^\s] 或 ^>测试通过。楼主再测试下是不是你想要的结果。
<php
function next_value($value)
{
$str='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for($i=0; $i<strlen($value); $i++)
{
$current_key[$i]=strrpos($str, $value[$i]);
}

$len=strlen($str)-1;
for($i=strlen($value)-1; $i>=0; $i--)
{
$i==strlen($value)-1 && $current_key[$i]++;
if($current_key[$i]>$len)
{
$current_key[$i]=0;
$current_key[$i-1]++;
}
}

if(count($current_key)>strlen($value))
{
return '溢出';
}

$v='';
for($i=0; $i<strlen($value); $i++)
{
$v=$str[$current_key[$i]];
}
return $v;
}
echo next_value('abcZ'); //参数为当前的字符串,计算下一个字符串
>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13404618.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存