<?
//지정된 자릿수의 랜덤한 숫자를 반환합니다. 최대 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 * 1000000 , (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("`(.{" . $cut . "})`", "$1" . $hipen, $serial, floor(($len-1) / $cut));
}
//넘어온 세자리수를 36진수로 변환
function get_simple_36($m){
$str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$div = floor($m[0] / 36);
$rest = $m[0] % 36;
return $str[$div] . $str[$rest];
}
//지정된 자릿수의 숫자와 영문으로된 시리얼을 반환합니다. - 를 포함하고 싶지 않을때는 $cut 이 $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);
if ($len2 % 2 == 1) $len2 += 1;
$serial = get_serial($len2, $len2, $hipen);
$serial = substr(preg_replace_callback("`.{3}`", "get_simple_36", $serial), 0, $len);
return preg_replace("`(.{" . $cut . "})`", "$1" . $hipen, $serial, floor(($len-1) / $cut));
}
$serial = get_serial_mix(16, 4);
echo $serial;
?>
이전글의 코멘트에서 전진님이 지적해준 세가지 문제를 수정하였습니다.
좋은 지적을 해주신 전진님께 감사드립니다.
댓글 4개
13년 전
쿨하게 받아주신 유창화님께 감사드립니다. ^^
13년 전
저도 아직 많이 부족한 사람이에요
좋은 지적 고맙습니다.
좋은 지적 고맙습니다.
13년 전
생성된 결과가 숫자보다 알파벳이 더 많게 하기 위한 간단한 방법
return $str[$div] . $str[$rest];
을
return $str[(36-$div)] . $str[(36-$rest)];
로 만 바꿔주면 됩니다.
물론 문자열을 아예 섞어버리는것도 가능합니다.
return $str[$div] . $str[$rest];
을
return $str[(36-$div)] . $str[(36-$rest)];
로 만 바꿔주면 됩니다.
물론 문자열을 아예 섞어버리는것도 가능합니다.
13년 전
오.. 이런 트윅 너무 좋아합니다. ^^;
고맙습니다. ^^
고맙습니다. ^^
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 5130 | 13년 전 | 750 | ||
| 5129 | 13년 전 | 1759 | ||
| 5128 | 13년 전 | 927 | ||
| 5127 | 13년 전 | 504 | ||
| 5126 | 13년 전 | 743 | ||
| 5125 | 13년 전 | 1350 | ||
| 5124 | 13년 전 | 817 | ||
| 5123 | 13년 전 | 454 | ||
| 5122 | 13년 전 | 993 | ||
| 5121 |
|
13년 전 | 1379 | |
| 5120 | 13년 전 | 496 | ||
| 5119 | 13년 전 | 472 | ||
| 5118 | 13년 전 | 400 | ||
| 5117 | 13년 전 | 714 | ||
| 5116 | 13년 전 | 449 | ||
| 5115 | 13년 전 | 904 | ||
| 5114 | 13년 전 | 937 | ||
| 5113 |
cookieyou
|
13년 전 | 1345 | |
| 5112 | 13년 전 | 528 | ||
| 5111 | 13년 전 | 818 | ||
| 5110 | 13년 전 | 4441 | ||
| 5109 | 13년 전 | 1061 | ||
| 5108 | 13년 전 | 403 | ||
| 5107 | 13년 전 | 476 | ||
| 5106 | 13년 전 | 631 | ||
| 5105 | 13년 전 | 1096 | ||
| 5104 | 13년 전 | 411 | ||
| 5103 |
프로프리랜서
|
13년 전 | 1341 | |
| 5102 | 13년 전 | 1582 | ||
| 5101 | 13년 전 | 457 | ||
| 5100 | 13년 전 | 367 | ||
| 5099 | 13년 전 | 518 | ||
| 5098 | 13년 전 | 2128 | ||
| 5097 | 13년 전 | 374 | ||
| 5096 | 13년 전 | 521 | ||
| 5095 | 13년 전 | 383 | ||
| 5094 | 13년 전 | 388 | ||
| 5093 | 13년 전 | 873 | ||
| 5092 | 13년 전 | 1052 | ||
| 5091 | 13년 전 | 405 | ||
| 5090 | 13년 전 | 505 | ||
| 5089 | 13년 전 | 949 | ||
| 5088 | 13년 전 | 401 | ||
| 5087 | 13년 전 | 1152 | ||
| 5086 | 13년 전 | 1477 | ||
| 5085 |
|
13년 전 | 3923 | |
| 5084 |
alexseo
|
13년 전 | 907 | |
| 5083 | 13년 전 | 1121 | ||
| 5082 | 13년 전 | 597 | ||
| 5081 | 13년 전 | 519 | ||
| 5080 | 13년 전 | 592 | ||
| 5079 | 13년 전 | 967 | ||
| 5078 | 13년 전 | 2175 | ||
| 5077 | 13년 전 | 665 | ||
| 5076 |
몰보는거야
|
13년 전 | 1687 | |
| 5075 |
|
13년 전 | 1764 | |
| 5074 | 13년 전 | 2005 | ||
| 5073 |
|
13년 전 | 763 | |
| 5072 |
프로프리랜서
|
13년 전 | 1035 | |
| 5071 |
프로프리랜서
|
13년 전 | 762 | |
| 5070 |
프로프리랜서
|
13년 전 | 873 | |
| 5069 |
뭐먹고살지ㅠ
|
13년 전 | 781 | |
| 5068 |
danielle
|
13년 전 | 643 | |
| 5067 | 13년 전 | 758 | ||
| 5066 | 13년 전 | 833 | ||
| 5065 | 13년 전 | 903 | ||
| 5064 | 13년 전 | 1715 | ||
| 5063 | 13년 전 | 430 | ||
| 5062 | 13년 전 | 801 | ||
| 5061 | 13년 전 | 575 | ||
| 5060 | 13년 전 | 379 | ||
| 5059 |
senseme
|
13년 전 | 835 | |
| 5058 | 13년 전 | 2843 | ||
| 5057 | 13년 전 | 1909 | ||
| 5056 | 13년 전 | 1480 | ||
| 5055 | 13년 전 | 437 | ||
| 5054 |
senseme
|
13년 전 | 1060 | |
| 5053 |
senseme
|
13년 전 | 1903 | |
| 5052 |
senseme
|
13년 전 | 1035 | |
| 5051 |
senseme
|
13년 전 | 1057 | |
| 5050 |
senseme
|
13년 전 | 796 | |
| 5049 |
senseme
|
13년 전 | 974 | |
| 5048 | 13년 전 | 1982 | ||
| 5047 | 13년 전 | 487 | ||
| 5046 |
우렁찬우렁이
|
13년 전 | 854 | |
| 5045 |
크라이스트
|
13년 전 | 2145 | |
| 5044 | 13년 전 | 958 | ||
| 5043 | 13년 전 | 524 | ||
| 5042 | 13년 전 | 964 | ||
| 5041 |
|
13년 전 | 803 | |
| 5040 |
스마일라니
|
13년 전 | 865 | |
| 5039 | 13년 전 | 1129 | ||
| 5038 | 13년 전 | 1920 | ||
| 5037 | 13년 전 | 1041 | ||
| 5036 |
cookieyou
|
13년 전 | 1397 | |
| 5035 | 13년 전 | 492 | ||
| 5034 | 13년 전 | 554 | ||
| 5033 | 13년 전 | 485 | ||
| 5032 | 13년 전 | 431 | ||
| 5031 | 13년 전 | 727 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기