2012-10-09 2 views
2

나는 another answer에 다음과 같은 자바 스크립트 기능을 발견PHP 확인 유효한 UUID

function createUUID() { 
    var s = []; 
    var hexDigits = "abcdef"; 

    for (var i = 0; i < 36; i++) { 
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); 
    } 

    s[14] = "4"; 
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); 
    s[8] = s[13] = s[18] = s[23] = "-"; 

    var uuid = s.join(""); 
    return uuid; 
} 

이 자바 스크립트에 GUID RFC를 유효한 UUID를/생성 .. 문자열을 검증 할 수있는 방법이 있다면 내가 알고 싶은 것은 일단 PHP 측에 도착하면. 나는 잠재적 참으로 대략 그 형식을 모든 것을 검증 할 정규식을 발견

/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/

하지만 사용하는 것과 당신이 동일한 길이의 문자열을 지정하고 확인을 통과 할 포맷으로 그.

자바 스크립트 함수에 몇 가지 종류의 시드를 추가 한 다음 PHP에서 또는 PHP가 전달 된 숫자의 유효성을 검사 할 수있는 방법이 올바른 형식 또는 무엇인지 확인하는 방법이 있습니까?

도움을 주시면 대단히 감사하겠습니다.

+0

"올바른 형식"이란 무엇입니까? – AndreKR

+0

v4 UUID를 모방하려고합니다. 죄송합니다. – Peter

답변

8

Wikipedia 따르면 UUID의 V4의 형식은 4 UUID를 가지고

버전 형태 XXXXXXXXXXXX-4xxx-yxxx-xxxxxxxxxxxx 여기서 X는 임의의 16 진수와 Y (8)의 하나 인 9 , A 또는 B. 예 f47ac10b-58cc-4372-a567-0e02b2c3d479.

대응 정규식은 다음과 같습니다

/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i 
+0

필자가 주요한 질문은 이것과 아마도 v4 UUID를 필요로하지 않을 것입니다. 만약'f47ac10b-58cc-4372-a567-0e02b2c3d479' 문자열을 가져 와서 4 또는 캐릭터 20의 A, B 중 어떤 것이 유효합니까? 그것은 내가 상상해야 할 것입니다. 나는 그것이 여전히 유효한 v4 UUID이지만 서버 측에서 나는 그것이 실제로 어플리케이션으로부터 오는 것인지를 확인할 수 있도록 씨드하는 방법이 있는지 궁금합니다. – Peter

+0

그것은 완전히 무작위입니다. 공개/비공개 키 서명을 찾고있는 경우 새로운 질문에 응용 프로그램을 설명하면 UUID와 아무런 관련이 없습니다. – AndreKR

+0

주제에서 완전히 벗어나지 만, http를 통해 전송할 수있는 일종의 공개/개인 키를 어떻게/어떻게 제안 하시겠습니까? – Peter

1

내가 주어진 문자열이 유효한 UUID 형식으로되어 있는지 확인하는 문자열 검증과 함께 regex 유효성 검사를 사용합니다.

if (!is_string($uuid) || (preg_match('/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/', $uuid) !== 1)) { 
    return false; 
} 

전체 요점 here을 볼 수 있습니다.