rand
条新动态, 点击查看
使用下面自定义函数即可,其中第一个参数$len是要生成的随机字符串长度,第二个参数是随机数生成范围的掩码(爱E族:aiezu.com)。
生成范围的4种基本掩码和对应的类型为:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符。要生成多种... 显示全部 »
生成范围的4种基本掩码和对应的类型为:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符。要生成多种... 显示全部 »
使用下面自定义函数即可,其中第一个参数$len是要生成的随机字符串长度,第二个参数是随机数生成范围的掩码(爱E族:aiezu.com)。
生成范围的4种基本掩码和对应的类型为:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符。要生成多种类型,直接将上面对应的掩码相加就行,如:大小写字母,$mask为3;大小写字母和数字,$mask为7。[pre=php]<?php
/*
* 生成随机字符串(可选含数字、字母、特殊字符)
* 爱E族: aiezu.com
* $len 生成字符串的长度
* $mask 生成字符范围的掩码之和:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符
*/
function randChars( $len = 8, $mask = 7 ) {
$result = $seeds = '';
$maskChars = array(
'1' => "abcdefghijklmnopqrstuvwxyz"
,'2' => "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
,'4' => "0123456789"
,'8' => "!\"#$%&'()*+,-./:;<=>?@ ^-`{|}"
);
foreach($maskChars as $key=>$val ) {
($mask & $key) === $key && $seeds .= $val;
}
while( $seeds && strlen($result) < $len ) {
$result .= substr($seeds, rand(0, strlen($seeds)-1), 1);
}
return $result;
} 下面是用法: echo sprintf("% 16s: 16位小写字母mask:1\n", randChars(16, 1));
echo sprintf("% 16s: 8位大写字母mask:2\n", randChars(8, 2));
echo sprintf("% 16s: 12位大、小写字母mask:1+2=3\n", randChars(12, 3));
echo sprintf("% 16s: 16位数字mask:4\n", randChars(16, 4));
echo sprintf("% 16s: 16位大、小写字母和数字mask:1+2+4\n", randChars(16, 7));
echo sprintf("% 16s: 12位特殊字符mask:8\n", randChars(12, 8));
echo sprintf("% 16s: 16位大小写字母、数字、特殊字符mask:1+2+4+8=15\n", randChars(16, 15)); 输出结果: ebbgzzxzxpaiejvt: 16位小写字母mask:1
EWSCCUPX: 8位大写字母mask:2
HufkJUVTXYfW: 12位大、小写字母mask:1+2=3
9098692730559259: 16位数字mask:4
cl2RK83q2ZiZXpVU: 16位大、小写字母和数字mask:1+2+4
)@>`?^?!`&:]: 12位特殊字符mask:8
Qj,UB9s>7jnW]AG%: 16位大小写字母、数字、特殊字符mask:1+2+4+8=15
生成范围的4种基本掩码和对应的类型为:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符。要生成多种类型,直接将上面对应的掩码相加就行,如:大小写字母,$mask为3;大小写字母和数字,$mask为7。[pre=php]<?php
/*
* 生成随机字符串(可选含数字、字母、特殊字符)
* 爱E族: aiezu.com
* $len 生成字符串的长度
* $mask 生成字符范围的掩码之和:1、小写字母;2、大写字母;4、数字;8、其他ASCII可见字符
*/
function randChars( $len = 8, $mask = 7 ) {
$result = $seeds = '';
$maskChars = array(
'1' => "abcdefghijklmnopqrstuvwxyz"
,'2' => "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
,'4' => "0123456789"
,'8' => "!\"#$%&'()*+,-./:;<=>?@ ^-`{|}"
);
foreach($maskChars as $key=>$val ) {
($mask & $key) === $key && $seeds .= $val;
}
while( $seeds && strlen($result) < $len ) {
$result .= substr($seeds, rand(0, strlen($seeds)-1), 1);
}
return $result;
} 下面是用法: echo sprintf("% 16s: 16位小写字母mask:1\n", randChars(16, 1));
echo sprintf("% 16s: 8位大写字母mask:2\n", randChars(8, 2));
echo sprintf("% 16s: 12位大、小写字母mask:1+2=3\n", randChars(12, 3));
echo sprintf("% 16s: 16位数字mask:4\n", randChars(16, 4));
echo sprintf("% 16s: 16位大、小写字母和数字mask:1+2+4\n", randChars(16, 7));
echo sprintf("% 16s: 12位特殊字符mask:8\n", randChars(12, 8));
echo sprintf("% 16s: 16位大小写字母、数字、特殊字符mask:1+2+4+8=15\n", randChars(16, 15)); 输出结果: ebbgzzxzxpaiejvt: 16位小写字母mask:1
EWSCCUPX: 8位大写字母mask:2
HufkJUVTXYfW: 12位大、小写字母mask:1+2=3
9098692730559259: 16位数字mask:4
cl2RK83q2ZiZXpVU: 16位大、小写字母和数字mask:1+2+4
)@>`?^?!`&:]: 12位特殊字符mask:8
Qj,UB9s>7jnW]AG%: 16位大小写字母、数字、特殊字符mask:1+2+4+8=15