PHP生成验证码mt_rand、substr

完整代码

<?php
header('content-type:text/html;charset=utf-8');

$str = "abcdefghijkomnopqrstuvwxyz0123456789";

//生成四位验证码
//思路:随机从以上字符串选出四个
// echo getrandmax();
// echo '<br>';
$len = strlen($str);//3
// echo '<br>';
$yzm = '';
for($i=0;$i<4;$i++){
	$rand = mt_rand(0,$len-1);
	$yzm .=substr($str,$rand,1);
	//echo $rand.'<br>';
}
echo $yzm;

输出结果(结果是随机的,可能输出的不太一样):
在这里插入图片描述

1.给定字符串一个·

$str = "abcdefghijkomnopqrstuvwxyz0123456789";

2.获取字符串的长度,放到$len这个变量里

$len = strlen($str);

3.使用mt_rand获取,也就是生成0-len-1的随机数。

$rand = mt_rand(0,$len-1);

4.我们使用for循环生成随机数

for($i=0;$i<4;$i++){
	$rand = mt_rand(0,$len-1);
	echo $rand.'<br>';
}

5.创建一个空字符串,再从上边输出的数字中得到一位随机数,放到空字符串里。

$yzm = '';
for($i=0;$i<4;$i++){
	$rand = mt_rand(0,$len-1);
	$yzm .=substr($str,$rand,1);
	//echo $rand.'<br>';
}
echo $yzm;

这样就完成了字符串的输出。

rand

rand — 产生一个随机整数
说明
int rand ( void )
int rand ( int $min , int $max )
如果没有提供可选参数 min 和 max , rand() 返回 0 到 getrandmax() 之间的伪随机整数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 rand(5, 15)。
Note: 在某些平台下(例如 Windows) getrandmax() 只有 32767。如果需要的范围大于 32767,那么指定 min 和 max 参数就可以生成更大的数了,或者考虑用 mt_rand() 来替代之。
参数
min
返回的最低值(默认:0)
max
返回的最高值(默认: getrandmax() )

mt_rand

mt_rand — 生成更好的随机数
语法和rand一样

substr

substr — 返回字符串的子串
说明
string substr ( string $string , int $start [, int $length ] )
返回字符串 string 由 start 和 length 参数指定的子字符串。
参数
string
输入字符串。
start
如果 start 是非负数,返回的字符串将从 string 的 start 位置开始,从 0 开始计算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。
如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。
如果 string 的长度小于或等于 start ,将返回 FALSE 。
使用负数 start

<?php
 $rest  =  substr ( "abcdef" , - 1 );     // 返回 "f"
 $rest  =  substr ( "abcdef" , - 2 );     // 返回 "ef"
 $rest  =  substr ( "abcdef" , - 3 ,  1 );  // 返回 "d"
 ?> 

length
如果提供了正数的 length ,返回的字符串将从 start 处开始最多包括 length 个字符(取决于 string 的长度)。
如果提供了负数的 length ,那么 string 末尾处的许多字符将会被漏掉(若 start 是负数则从字符串尾部算起)。如果 start 不在这段文本中,那么将返回一个空字符串。
如果提供了值为 0, FALSE 或 NULL 的 length ,那么将返回一个空字符串。
如果没有提供 length ,返回的子字符串将从 start 位置开始直到字符串结尾。
使用负数 length
<?php
$rest = substr ( “abcdef” , 0 , - 1 ); // 返回 “abcde”
$rest = substr ( “abcdef” , 2 , - 1 ); // 返回 “cde”
$rest = substr ( “abcdef” , 4 , - 4 ); // 返回 “”
$rest = substr ( “abcdef” , - 3 , - 1 ); // 返回 “de”
?>

返回值
返回提取的子字符串, 或者在失败时返回 FALSE 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值