当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » PHP  » 编程基础
分享到: 
收藏 +0
2
<无详细内容>
标签: <无>

代码片段(1) [全屏查看所有代码]

1. [代码][PHP]代码     跳至 [1] [全屏预览]

/**
 *  生成指定长度的随机字符串(包含大写英文字母, 小写英文字母, 数字)
 * 
 * @author Wu Junwei <www.wujunwei.net>
 * 
 * @param int $length 需要生成的字符串的长度
 * @return string 包含 大小写英文字母 和 数字 的随机字符串
 */
function random_str($length)
{
    //生成一个包含 大写英文字母, 小写英文字母, 数字 的数组
    $arr = array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'));

    $str = '';
    $arr_len = count($arr);
    for ($i = 0; $i < $length; $i++)
    {
        $rand = mt_rand(0, $arr_len-1);
        $str.=$arr[$rand];
    }

    return $str;
}


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(9)

  • 1楼:DcV 发表于 2013-06-17 17:23 回复此评论
    +1
  • 2楼:Tuesday 发表于 2013-06-18 09:13 回复此评论

    function random_str($length)
    {
        $str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
       
        $strlen = 62;
        while($length > $strlen){
            $str .= $str;
            $strlen += 60;
        }

        $str = str_shuffle($str);
        return substr($str, 0,$length);
    }

    str_shuffle 函数


  • 3楼:Choate 发表于 2013-06-18 09:23 回复此评论
    function verificationCode($leng) {
    $arr   = array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'));
    shuffle($arr);
    $str = implode('', array_slice($arr, 0, $leng));
    return $str;
    }
  • 4楼:随风随影 发表于 2013-06-18 09:29 回复此评论
    这段代码写得并不严谨。假如用户把length写得很大,岂不是循环很大的数。。加个判断最好,不要超过$arr的长度
  • 5楼:wujunwei928 发表于 2013-06-18 13:45 回复此评论
    回复朋友的方法都不错, 效率都比我写的高
    突然想起一个词形容我挺合适的: 抛砖引玉
    不错, 又学会了几个php函数  str_shuffle, array_slice...
  • 6楼:mckee 发表于 2013-06-23 00:33 回复此评论
    结果测试2楼的效率比较高
  • 7楼:coding_boy 发表于 2013-07-05 12:20 回复此评论

    引用来自“mckee”的评论

    结果测试2楼的效率比较高
    2楼产生的字符串不是全概率事件,比如$length<62就不可能产生这样的字符串:llllaaad,就是含有相同字符或者数字的,所以各有利弊。
  • 8楼:mckee 发表于 2013-07-05 21:34 回复此评论

    引用来自“coding_boy”的评论

    引用来自“mckee”的评论

    结果测试2楼的效率比较高
    2楼产生的字符串不是全概率事件,比如$length<62就不可能产生这样的字符串:llllaaad,就是含有相同字符或者数字的,所以各有利弊。
    反正我是很少生成超过62个字符的 看实际应用吧
  • 9楼:nihaozzb 发表于 2014-07-28 10:33 回复此评论

    引用来自“ChaoserYao”的评论

    function verificationCode($leng) {
    $arr   = array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'));
    shuffle($arr);
    $str = implode('', array_slice($arr, 0, $leng));
    return $str;
    }
    最爱你的写法~~其他方法都或多或少有硬编码嫌疑
开源从代码分享开始 分享代码
wujunwei928的其它代码 全部(3)...