substr(strlen) 函数解释说明
substr($data,rand(0,strlen($data)),1);这个函数的解释? 这样取值是随机多少个?
还有的地方看到最后是-1 这又是什么意思?
substr($data,rand(0,strlen($data)),1);这个函数的解释? 这样取值是随机多少个?
还有的地方看到最后是-1 这又是什么意思?
2017-03-22
这是PHP中的代码,我们从括号里往外看:
strlen()用于返回字符串$data的长度,假设$data字符串长度为10;
rand(0,strlen($data))生成0~10中的一个随机整数并返回,假设返回6;
substr($data,rand(0,strlen($data)),1);先简化为:
substr($data,6,1);就是返回$data字符串中从下标为6的字符开始截取1个字符并返回;
假设$data="一二三四五六七八九十";
就是先用strlen()得到这个字符串的长度10,然后用rand()从0~10中取一个随机整数6,然后用这个整数6做下标用substr()取出字符串中对应的字符"七"。
这串代码应该有点问题,因为字符串的长度会比字符串的最大下标大1,所以应该是strlen($data)-1。
修正后的代码可以在PHP中用于在若干个自定义字符中随机选取若干个生成验证码
$data = 'abcdefghijkmnpqrstuvwxyQWERTYUIOPLKJHGFDSAZXCVBNM3456789';
$code = ""; //定义一个空字符串
for ($i = 0; $i < 4; $i++) { //循环四次
$code .= substr($data, rand(0, strlen($data)-1), 1); //将随机取出的字符拼入字符串$code中
}
上述代码就是在所有大小写字母和数字中随机选取4个字符(除了小写l,z,o,数字1,2)当成验证码保存在$code中。
举报