继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

一些PHP生成唯一字符串的方法

hhhzihao2
关注TA
已关注
手记 3
粉丝 1
获赞 33
<?php

/* 设置页面内容是html编码格式 */
header('Content-Type:text/html; charset=utf-8');

/**
 * 生成32位的唯一字符串
 */
function unique_name() {

    return md5(uniqid(mt_rand(), true));

}

/**
 * 生成毫/微秒的时间戳
 */
function microtime_float() {

    /* 微秒 */
    list($usec, $sec) = explode(' ', microtime());

    /* 非科学计数法 */
    return array('ms'=>microtime(true)*10000, 'mi'=>sprintf("%.0f", ((float)$usec + (float)$sec)*100000000), );

}

/**
 * 生成指定位数的随机数
 */
function random_number( $a = array('can_zero_start'=>null,'length'=>null,'prefix'=>null,'suffix'=>null,) ){

    /* 允许0开头 */
    $can_zero_start = isset($a['can_zero_start']) ? $a['can_zero_start'] : true;

    if ( $can_zero_start ) {

        $num = mt_rand( 0, 9 );

    } else {

        $num = mt_rand( 1, 9 );

    }

    /* 长度 */
    $length = isset($a['length']) ? $a['length'] : 8;

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

        $num .= mt_rand( 0, 9 );

    }

    /* 前缀 */
    $prefix = isset($a['prefix']) ? $a['prefix'] : null;

    /* 后缀 */
    $suffix = isset($a['suffix']) ? $a['suffix'] : null;

    return $prefix . $num . $suffix;

}

/**
 * 生成验证码
 */
function verification_code( $a = array('length'=>null,'number_case'=>null,'lower_case'=>null,'upper_case'=>null,'chinese'=>null,) ) {

    /* 字符库 */
    $number_str_all = '0123456789';

    $number_str = '23456789';

    $lower_case_str = 'abcdefghijkmnpqrstuvwxyz';

    $upper_case_str = 'ABCDEFGHJKLMNPQRSTUVWXYZ';

    $chinese_library = chinese_library();

    /* 含有数字 */
    $number_case = isset($a['number_case']) ? $a['number_case'] : true;

    /* 含有小写字母 */
    $lower_case = isset($a['lower_case']) ? $a['lower_case'] : true;

    /* 含有大写字母 */
    $upper_case = isset($a['upper_case']) ? $a['upper_case'] : true;

    /* 中文 */
    $chinese = isset($a['chinese']) ? $a['chinese'] : false;

    /* 拼接字符库 */
    if ( $chinese or ( $number_case == false and $lower_case == false and $upper_case == false ) ) {

        $str = $chinese_library['str'];

    } elseif ( $number_case == true and $lower_case == false and $upper_case == false ) {

        $str = $number_str_all;

    } elseif ( $number_case != true or $lower_case != false or $upper_case != false ) {

        $str = null;

        if ( $number_case ) $str .= $number_str;

        if ( $lower_case ) $str .= $lower_case_str;

        if ( $upper_case ) $str .= $upper_case_str;

    }

    /* 长度 */
    $length = isset($a['length']) ? $a['length'] : 4;

    /* 拼接验证码 */
    $array_rand_val = array_rand_val( array('data'=>$str,'length'=>$length,'repeat'=>true,) );

    return array('code'=>$array_rand_val['str'],'code_arr'=>$array_rand_val['arr'],);

}

/**
 * 生成中文验证码(包括候选码)
 */
function chinese_code( $a = array('length_code'=>null,'length_candidate'=>null,) ) {

    /* 验证码长度 */
    $length_code = isset($a['length_code']) ? $a['length_code'] : 2;

    /* 候选码长度 */
    $length_candidate = isset($a['length_candidate']) ? $a['length_candidate'] : 9;

    /* 如果填反了 */
    if ( $length_code > $length_candidate ) {

        list($length_code, $length_candidate) = array($length_candidate, $length_code);  

    }

    /* 生成候选码 */
    $chinese_library = chinese_library();

    $candidate = array_rand_val( array('data'=>$chinese_library['arr'], 'length'=>$length_candidate, 'repeat'=>false, ) );

    /* 生成验证码 */
    $code = array_rand_val( array('data'=>$candidate['arr'],'length'=>$length_code,'repeat'=>false,) );

    return array('code_str'=>$code['str'], 'candidate_str'=>$candidate['str'], 'code_arr'=>$code['arr'], 'candidate_arr'=>$candidate['arr'], );

}

/**
 * 汉字库
 */
function chinese_library() {

    /* 字符串 */
    $str = '的一是了不人在他有这个上们来到时大地为子中你说生国年着就那和要她出也得里后自以会家可下而过天去能对小多然于心学么之都好看起发当没成只如'
    .'事把还用第样道想作种开美总从无情己面最女但现前些所同手又行意动方期它头经长儿回位分爱老因很给名法间斯知世什两次使身者被高已亲其进此话常与活正感';

    /* 数组 */
    preg_match_all('/./u',$str,$arr);

    /* 返回 字符串 & 数组 */
    return array( 'arr'=>$arr[0], 'str'=>$str,);

}

/**
 * 随机获取 数组/字符串 中的值/字符
 */
function array_rand_val( $a = array('data'=>null,'length'=>null,'repeat'=>null,) ) {

    /* 转数组 */
    if ( !isset($a['data']) ) {

        $arr = array(1,2,3);

    } elseif ( !is_array($a['data']) ) {

        preg_match_all('/\S/u', $a['data'], $b);

        $arr = $b[0];

    } elseif ( is_array($a['data']) ) {

        $arr = $a['data'];

    }   

    /* 可重复吗 */
    $repeat = isset($a['repeat']) ? $a['repeat'] : false;

    /* 获取个数 */
    $length = isset($a['length']) ? $a['length'] : 1;

    if ( $repeat ) {

        $return_arr = array();

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

            /* 随机键名的值 */
            $return_arr[] = $arr[array_rand($arr)];

        }

    } elseif ( !$repeat ) {

        /* 打乱 */
        shuffle($arr);

        /* 获取 */
        $return_arr =  array_slice($arr, 0, $length);

    }

    return array('arr'=>$return_arr, 'str'=>implode($return_arr), );

}
打开App,阅读手记
3人推荐
发表评论
随时随地看视频慕课网APP

热门评论

#include<stdio.h>

int main()

{

    printf("Very Good!");

}


查看全部评论