테스트 사이트 - 개발 중인 베타 버전입니다

영문 대문자 포함 시리얼 생성

· 13년 전 · 1248 · 16
<?

//지정된 자릿수의 랜덤한 숫자를 반환합니다. 최대 10까지 가능합니다. 4 이면 1000 에서 9999 사이의 랜덤 숫자
function get_rand_number($len=4) {

    if (empty($len) || !is_int($len)) $len = 4;
    else if ($len < 0) $len = abs($len);
    if ($len > 10) $len = 10;

    return rand(bcpow(10, $len - 1), bcadd(bcpow(10, $len), -1));
}

//지정된 자릿수의 숫자로된 시리얼을 반환합니다. - 를 포함하고 싶지 않을때는 $cut 이 $len 보다 크거나 같으면 됩니다.
function get_serial($len=16, $cut=4, $hipen='-'){

    if (empty($len) || !is_int($len)) $len = 16;
    else if ($len < 0) $len = abs($len);

    if (empty($cut) || !is_int($cut)) $cut = 4;
    else if ($cut < 0) $cut = abs($cut);

    list($usec, $sec) = explode(' ', microtime());

    $serial = str_replace('.', '', (string)bcmul(bcmul((float)$usec * 10000000 , (float)$sec) , get_rand_number(4)));
    $serial_length = strlen($serial);
    $sub = $len - $serial_length;

    if ($sub > 0) $serial .= (string)get_rand_number($sub);
    else if ($sub < 0) $serial = substr($serial, 0, $len);

    return preg_replace("`([0-9]{" . $cut . "})`", "$1" . $hipen, $serial, floor($len / $cut) - 1);
}

//넘어온 세자리수를 34진수로 변환
function get_simple_34($m){

    $str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $div = floor($m[0] / 34);
    $rest = $m[0] % 34;

    return $str[$div] . $str[$rest];
}

//지정된 자릿수의 숫자와 영문으로된 시리얼을 반환합니다. - 를 포함하고 싶지 않을때는 $cut 이 $len 보다 크거나 같으면 됩니다. $len 은 짝수만 가능
function get_serial_mix($len=16, $cut=4, $hipen='-'){

    if (empty($len) || !is_int($len)) $len = 16;
    else if ($len < 0) $len = abs($len);

    if (empty($cut) || !is_int($cut)) $cut = 4;
    else if ($cut < 0) $cut = abs($cut);

    $len2 = (int)($len * 3 / 2);

    $serial = get_serial($len2, $len2, $hipen);

    $serial = preg_replace_callback("`.{3}`", "get_simple_34", $serial);

    return preg_replace("`(.{" . $cut . "})`", "$1" . $hipen, $serial, floor($len / $cut) - 1);
}

$serial = get_serial_mix(16, 4);
echo $serial;
?>

아래 숫자로된 것과 위의 두함수는 동일하며
새로 추가로 두개의 함수가 추가되었습니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 16개

감사합니다.
13년 전
멋집니다!!
감사합니다. 보이님이 잘 활용 하시겠습니다. ㅎㅎ
사진이 흐려서 정확친 않지만
요새 티비에 나오는 오페라 가수인가 뮤지컬 가수인가
그사람 닮은거 같아요.
네 세분 감사합니다.
코드에서 고수의 향기가..
별말씀을요.

고맙습니다.
이번강좌는 '내가 만들어 쓰는 시리얼생성 함수' 군요!!
제목을 이렇게 잡는게 맞나요^^!
대박입니다^^!
ㅎㅎ 고맙습니다.
저는 엔피씨님 글에서 많이 배우는데....
여러분야에 걸쳐서 잘 아는것 같아요.
부끄럽습니다 ㅎㅎ
아직 그누에계신 여러 개발자분들께 못미칩니다ㅎㅎ

하나 스스로 위로하는 것은
여러가지를 알면 응용범위가 넓어 진다고 위로합니다.

그런점에서, 맨날 함수만 써오던 저에게
유창화님의 함수 분석,만들어 쓰기 기술은
제가 또 알아가야할 부분입니다^^!

인생 선배님들은 뭔가 달라도 다르다는게 느껴집니다!

게시글 목록

번호 제목
12487
12486
380
12484
12483
376
12482
12481
12479
12478
12477
12476
12475
12474
12473
12472
12471
12470
12469
371
12468
12467
12466
12465
12464