2013-03-07 2 views
0

나는 조금 끈적 해 보였지만 사용할 키워드를 알아 내지 못했습니다.

사용자 생년월일을 저장하고 있습니다. 형식이 YYYY-MM-DD인지 확인하고 싶습니다.
내가 좋아하는 뭔가를 생각하고 있어요 : - 문자이를 위해
문자 만 설정된 시간 만 바꾸기

if(!ctype_digit(str_replace("-", "", $dob)) || strlen(str_replace("-", "", $dob)) != 8) 
{ 
    echo "Incorrect format: date of birth"; 
} 


, 난 단지 세를 교체하려면() 나 strlen 사용해야합니다. 그것이 3보다 많거나 적 으면 잘못된 형식을 반향합니다. 이것을 어떻게 성취합니까? 아니면 더 좋은 방법이 있습니까?

+3

'preg_replace()'사용을 고려해 보셨습니까? 아니면 최소한 $ dob을 규칙적인 패턴으로 테스트하십시오. – Zim84

+0

감사합니다. Starx에서 작동 코드를 알려주었습니다. 투표했습니다. –

답변

3

정규식 사용은 어떻습니까? 당신은 대부분의 예는 정규 표현식으로 해결된다 볼 수 있습니다 -

if (!preg_match("/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $dob)) 
{ 
    echo "Invalid date."; 
} 
+0

위대한, 감사합니다! 8 분 안에 올바른 것으로 표시하겠습니다. –

2

많은 예를 찾아 "검증 기간"또는, 귀하의 경우, PHP는 예를 찾아 "PHP의 유효성을 날짜 형식을"시도를 검색하려면 이건 당신 티켓 이잖아요.

: 등록 표현은 최소한의 요구 사항 (예 : 8 자 이상, 적어도 숫자 하나는 대문자 등)

여기에 하나의 예제를 충족 암호를 날짜, 이메일 주소 형식, 입력의 유효성을 검사 할 수 있습니다

if(preg_match('/\d{4}-\d{2}-\d{2}/',$date)){ 
    // good date 
}else{ 
    // bad date 
} 
2

또한 날짜가 실제 날짜인지 확인해야합니다. 그게 아니라 와 같은 실제 날짜를 찾습니다.

if (!preg_match("/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/D", $dob)) 
{ 
    echo 'Invalid date'; 
} 

else 
{ 

    list($year, $month, $day) = explode('-', $dob); 

    if (!checkdate((int) $month, (int) $day, (int) $year)) 
    { 
     echo 'Invalid date'; 
    } 

} 

결국 1988-06-31을 수락하지 않으려합니다.

+0

감사합니다. 훌륭합니다. –