PHP多种情况下生成随机字符串

分类栏目:用户体验 - 前端开发

1271

发布于 2 条评论

/**

 * 生成随机字符串

 * @param  integer $length 长度

 * @param  boolean $int    是否纯数字

 * @param  integer $level  字符串强度[1-4]

 * @return [type]          [description]

 */

if (!function_exists('randoms')) {

    function randoms($length=6,$int=false,$level=2) {

        $character = [

            'number' => '0123456789',

            'letter' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',

            'symbol' => '!@#$%^&*()-_[]{}<>~+=/?|',

            'filter' => '0OIl1'

        ];

        // 根据条件设置随机字符范围

        if ($int) {

            // 纯数字

            $chars = $character['number'];

        }else{

            switch ($level) {

                case 1:

                    // 大写字母

                    $chars = $character['letter'];

                    break;

                case 2:

                    // 数字+大写字母

                    $chars = $character['number'].$character['letter'];

                    break;

                case 3:

                    // 数字+大写字母+小写字母

                    $chars = $character['number'].$character['letter'].strtolower($character['letter']);

                    break;

                case 4:

                    // 数字+大写字母+小写字母+符号

                    $chars = $character['number'].$character['letter'].strtolower($character['letter']).$character['symbol'];

                    break;

                default:

                    // 数字+大写字母

                    $chars = $character['number'].$character['letter'];

                    break;

            }

        }

        // 过滤指定字符

        if (!empty($character['filter']) && $level==3 || $level==4) {

            $filter = str_split($character['filter']);

            foreach ($filter as $key => $value) {

                $chars = preg_replace('/'.$value.'/','',$chars);

            }

        }

        // 开始随机

        $string = '';

        for($i=0;$i<$length;$i++) {

            $string .= $chars[mt_rand(0,strlen($chars)-1)];

        }

        return $string;

    }

}

评论列表

host1plus vps
兄弟,交换链接吗?http://www.14vps.com
2016-05-13 07:41:23