<?
//지정된 자릿수의 랜덤한 숫자를 반환합니다. 최대 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년 전
오.. 이런 트윅 너무 좋아합니다. ^^;
고맙습니다. ^^
고맙습니다. ^^
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 530 |
|
19년 전 | 1246 | |
| 529 |
|
19년 전 | 1430 | |
| 528 |
|
19년 전 | 1982 | |
| 527 |
사랑과우정
|
19년 전 | 2397 | |
| 526 | 19년 전 | 2880 | ||
| 525 |
|
19년 전 | 2311 | |
| 524 |
|
19년 전 | 1815 | |
| 523 | 19년 전 | 7056 | ||
| 522 |
|
19년 전 | 3738 | |
| 521 | 19년 전 | 2354 | ||
| 520 | 19년 전 | 2395 | ||
| 519 | 19년 전 | 2892 | ||
| 518 |
|
19년 전 | 5799 | |
| 517 |
|
19년 전 | 5568 | |
| 516 |
|
19년 전 | 2277 | |
| 515 |
|
19년 전 | 3323 | |
| 514 | 19년 전 | 2875 | ||
| 513 | 19년 전 | 2229 | ||
| 512 |
개발자관리자
|
19년 전 | 2737 | |
| 511 |
개발자관리자
|
19년 전 | 1595 | |
| 510 |
개발자관리자
|
19년 전 | 1753 | |
| 509 |
개발자관리자
|
19년 전 | 1865 | |
| 508 |
개발자관리자
|
19년 전 | 2017 | |
| 507 |
개발자관리자
|
19년 전 | 1701 | |
| 506 |
개발자관리자
|
19년 전 | 1821 | |
| 505 |
개발자관리자
|
19년 전 | 1789 | |
| 504 |
개발자관리자
|
19년 전 | 1866 | |
| 503 |
개발자관리자
|
19년 전 | 1529 | |
| 502 |
개발자관리자
|
19년 전 | 2664 | |
| 501 | 19년 전 | 2015 | ||
| 500 | 19년 전 | 3248 | ||
| 499 | 19년 전 | 3277 | ||
| 498 | 19년 전 | 2533 | ||
| 497 | 19년 전 | 2609 | ||
| 496 | 19년 전 | 2464 | ||
| 495 | 19년 전 | 2709 | ||
| 494 | 19년 전 | 2687 | ||
| 493 | 19년 전 | 3200 | ||
| 492 | 19년 전 | 2912 | ||
| 491 | 19년 전 | 5334 | ||
| 490 |
|
19년 전 | 2133 | |
| 489 |
|
19년 전 | 2219 | |
| 488 |
|
19년 전 | 2025 | |
| 487 |
|
19년 전 | 1955 | |
| 486 |
|
19년 전 | 1953 | |
| 485 |
|
19년 전 | 2160 | |
| 484 |
|
19년 전 | 3227 | |
| 483 |
|
19년 전 | 3112 | |
| 482 |
|
19년 전 | 2867 | |
| 481 |
|
19년 전 | 2570 | |
| 480 |
|
19년 전 | 2642 | |
| 479 |
|
19년 전 | 2316 | |
| 478 |
|
19년 전 | 2340 | |
| 477 |
개발자관리자
|
19년 전 | 1605 | |
| 476 |
개발자관리자
|
19년 전 | 2319 | |
| 475 |
개발자관리자
|
19년 전 | 2672 | |
| 474 |
개발자관리자
|
19년 전 | 2669 | |
| 473 |
개발자관리자
|
19년 전 | 2981 | |
| 472 | 19년 전 | 2747 | ||
| 471 | 19년 전 | 1747 | ||
| 470 | 19년 전 | 1841 | ||
| 469 |
|
19년 전 | 2747 | |
| 468 |
|
19년 전 | 2235 | |
| 467 |
|
19년 전 | 4010 | |
| 466 |
|
19년 전 | 2529 | |
| 465 | 19년 전 | 2394 | ||
| 464 | 19년 전 | 3539 | ||
| 463 |
|
19년 전 | 3111 | |
| 462 |
|
19년 전 | 2258 | |
| 461 |
|
19년 전 | 3047 | |
| 460 |
|
19년 전 | 2255 | |
| 459 |
|
19년 전 | 3124 | |
| 458 |
|
19년 전 | 3549 | |
| 457 |
|
19년 전 | 5226 | |
| 456 |
|
19년 전 | 3147 | |
| 455 |
스마일미디어
|
19년 전 | 3136 | |
| 454 |
스마일미디어
|
19년 전 | 2736 | |
| 453 |
스마일미디어
|
19년 전 | 2477 | |
| 452 |
스마일미디어
|
19년 전 | 2735 | |
| 451 |
스마일미디어
|
19년 전 | 2458 | |
| 450 |
스마일미디어
|
19년 전 | 2585 | |
| 449 |
스마일미디어
|
19년 전 | 2377 | |
| 448 |
스마일미디어
|
19년 전 | 2698 | |
| 447 | 19년 전 | 2969 | ||
| 446 |
스마일미디어
|
19년 전 | 3252 | |
| 445 |
스마일미디어
|
19년 전 | 7053 | |
| 444 |
스마일미디어
|
19년 전 | 5175 | |
| 443 |
스마일미디어
|
19년 전 | 2442 | |
| 442 |
스마일미디어
|
19년 전 | 5184 | |
| 441 |
스마일미디어
|
19년 전 | 3117 | |
| 440 |
|
19년 전 | 2485 | |
| 439 | 19년 전 | 2176 | ||
| 438 | 19년 전 | 3573 | ||
| 437 |
|
19년 전 | 2875 | |
| 436 |
|
19년 전 | 3255 | |
| 435 |
|
19년 전 | 2898 | |
| 434 | 19년 전 | 3393 | ||
| 433 |
sjsjin
|
19년 전 | 2727 | |
| 432 |
sjsjin
|
19년 전 | 3463 | |
| 431 |
sjsjin
|
19년 전 | 2425 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기