通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和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() 函数实现了“自然排序”,即数字从 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代码部分:
<phpecho "刷新输出不同的六个字符组合:"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'); //参数为当前的字符串,计算下一个字符串
>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)