substr(strlen) 函数解释说明

来源:1-6 PHP验证码制作之字母数字混合验证码实现

qq_百度信誉认证中心蒲超_0

2017-03-22 12:42

substr($data,rand(0,strlen($data)),1);这个函数的解释?    这样取值是随机多少个?

还有的地方看到最后是-1   这又是什么意思?

写回答 关注

2回答

  • qq_797_1
    2017-09-23 10:46:17

    这是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中。

  • qq_来个_0
    2017-03-22 19:37:34

    -1反方向开始长度1

PHP实现验证码制作

各种形态验证码核心原理与实现技巧,讲解实现过程中的技术难点

37920 学习 · 321 问题

查看课程

相似问题