s

유니큐 문자열 생성 함수를 공유해드립니다.

· 2023-06-24 (토) 13:25:03 · 1209

PHP로 중복없는 유일한 문자열을 생성하는 제가 애용하는 함수를 공유해드립니다.

function v4 ($trim = true)
{
    // Windows
    if (function_exists('com_create_guid') === true) {
        if ($trim === true)
            return trim(com_create_guid(), '{}');
        else
            return com_create_guid();
    }

    // OSX/Linux
    if (function_exists('openssl_random_pseudo_bytes') === true) {
        $data = openssl_random_pseudo_bytes(16);
        $data[6] = chr(ord($data[6]) & 0x0f | 0x40);    // set version to 0100
        $data[8] = chr(ord($data[8]) & 0x3f | 0x80);    // set bits 6-7 to 10
        return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
    }

    // Fallback (PHP 4.2+)
    mt_srand((double)microtime() * 10000);
    $charid = strtolower(md5(uniqid(rand(), true)));
    $hyphen = chr(45);                  // "-"
    $lbrace = $trim ? "" : chr(123);    // "{"
    $rbrace = $trim ? "" : chr(125);    // "}"
    $guidv4 = $lbrace.
        substr($charid,  0,  8).$hyphen.
        substr($charid,  8,  4).$hyphen.
        substr($charid, 12,  4).$hyphen.
        substr($charid, 16,  4).$hyphen.
        substr($charid, 20, 12).
        $rbrace;
    return $guidv4;
}

 

이용해주시는 분들께 감사를 드립니다.

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

개발자팁

5,403건

개발과 관련된 유용한 정보를 공유하세요. 질문은 QA에서 해주시기 바랍니다.

+
분류 제목 글쓴이 날짜 조회
기타 23-07-03 조회 1,569
MySQL 23-07-02 조회 2,238
JavaScript 23-07-01 조회 1,872
PHP 23-06-30 조회 2,870
MySQL 23-06-29 조회 7,639
node.js 23-06-28 조회 1,903
node.js 23-06-27 조회 1,474
PHP 23-06-26 조회 1,704
PHP 23-06-25 조회 1,731
PHP 23-06-24 조회 1,210
PHP 23-06-22 조회 1,501
PHP 23-06-20 조회 1,574
기타 23-06-19 조회 1,841
23-06-17 조회 1,246
기타 23-06-18 조회 2,303
PHP 23-06-17 조회 1,600
JavaScript 23-06-16 조회 2,295
PHP 23-06-15 조회 1,957
23-05-16 조회 1,178
기타 23-06-13 조회 1,611
PHP 23-06-05 조회 1,696
PHP 23-05-28 조회 2,013
기타 23-05-23 조회 2,353
PHP 23-05-19 조회 1,824
PHP 23-05-18 조회 1,965
PHP 23-05-08 조회 1,924
JavaScript 23-04-10 조회 1,706
MySQL 23-04-08 조회 1,929
MySQL 23-03-15 조회 1,944
PHP 23-03-14 조회 2,318