"PHP uniqid()"의 두 판 사이의 차이

5번째 줄: 5번째 줄:
:2번째 인수로 true를 넣으면 16진수 23자리가 됨
:2번째 인수로 true를 넣으면 16진수 23자리가 됨
* 실상은 [[PHP microtime()|microtime()]] 값을 변형한 것임
* 실상은 [[PHP microtime()|microtime()]] 값을 변형한 것임
:그렇기 때문에 반복생성해보면 앞부분은 잘 바뀌지 않음
:그렇기 때문에 반복생성해보면 앞부분이 잘 바뀌지 않음
* 매개변수를 넣으면 접두어로 붙음
* 매개변수를 넣으면 접두어로 붙음



2017년 4월 12일 (수) 11:07 판

1 개요

PHP uniqid()
  • 유니크 ID를 생성하는 PHP 함수[1]
  • 기본은 16진수 13자리
2번째 인수로 true를 넣으면 16진수 23자리가 됨
그렇기 때문에 반복생성해보면 앞부분이 잘 바뀌지 않음
  • 매개변수를 넣으면 접두어로 붙음
echo uniqid();
# 4b3403665fea6
echo uniqid('hello_');
# hello_56fdc64b3ea94

2 생성일시 확인

function uniqid2datetime($uniqid) {
	return date("Y-m-d H:i:s",hexdec(substr($uniqid,0,8)));
}
echo uniqid2datetime('4b3403665fea6');
# 2009-12-25 09:12:22

3 직접 제작

  • uniqid()와 동일한 기능을 가지는 uniqid2()를 만들어 보았다.
  • 내장 함수 uniqid()가 있으므로 uniqid2()를 실제로 사용할 일은 없겠지만, 작동원리를 이해할 수 있다.
function uniqid2() {
	list($u, $s) = explode(" ", microtime());
	return dechex($s).dechex(substr($u,2,6));
}
for($i=0; $i<2; $i++) {
	echo 'origin: ' . uniqid() . PHP_EOL;
	echo 'custom: ' . uniqid2() . PHP_EOL;	
}
# origin: 58ed8b4ec676b
# custom: 58ed8b4ec6795
# origin: 58ed8b4ec67f2
# custom: 58ed8b4ec67fa

4 같이 보기

5 참고 자료

  1. 단, 완벽하게(100%) 유일함을 보장하지는 않음
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}