2010-07-24 2 views
3

데이터 변수를 확인할 수 있는지 확인하기 위해 날짜 형식을 확인하려고하는데 MM-DD-YYYY와 같은 특정 형식이 있습니다. 그렇지 않다면 exit(). 형식을 확인하는 방법을 잘 모르겠습니다. 어떤 형식 으로든 도움을받을 수 있다면 감사하겠습니다. 당신이 사용자의 입력을 제한하기 위해이 작업을 수행하려는 경우 감사합니다 ...PHP에서 데이터 형식을 확인하는 방법

$date=05/25/2010;  
if(XXXXX){ 
    // do something.... 
} 
+0

감사합니다. 나는 너희들을 아직 투표 할 수 없다. 저를 투표하고 저에게 명성을주고 저에게 모두에게 +1을주십시오 .. : D – user401184

답변

2

를 사용하여 정규 표현식을 기반으로, 유효 확인 할 수있는 일에 추가 검사. 이전에 게시 된 항목은 99/99/9999와 같은 잘못된 날짜를 수락합니다. 다음 (here에서 lifed) 개선 정규식

$date_regex = '!^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$!'; 
if (preg_match($date_regex, $date)) { 
    // do something 
} 

그것은에만 유효 날짜를 취할 것이며, 그것은 또한 (예 : 2002년 5월 20일 및 2002년 5월 2일 같은) 다른 구분을 받아 들일 것입니다.

나에게 묻는다면, 사용자가 특정 형식을 입력하게하는 것이 좋지 않은 경험입니다. strtotime()을 사용하여 다른 형식을 처리 할 수 ​​있습니다.

+0

좋은 .... 많이 고마워! – user401184

+0

고마워요. 나는 너희들을 아직 투표 할 수 없다.나를 투표하고 평판을 15 가지로 만들어주세요. 모두 +1 – user401184

+0

mm-dd-yyyy 또는 yyyy-mm-dd와 같은 두 가지 형식 만 원한다면 두 개의 정규 표현식을 만들어야합니까 ??? 감사. – user401184

4

당신은 당신이 항상 사용자의 입력에 strtotime()를 사용하여 변환 할 수 있습니다, regular expressions

if(preg_match("/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/")) 
{ 
    do something 
} 
+0

참고 : 유효하지 않은 입력 (00/00/0000과 같은) – NullUserException

+0

고마워요. 나는 너희들을 아직 투표 할 수 없다. 나를 투표하고 평판을 15 가지로 만들어주세요. 나는 모두에게 +1을줍니다. – user401184

2

을 사용할 수 있습니다 그것을 유닉스 타임 스탬프에 넣은 다음 date() 함수를 사용하여 원하는대로 표시하십시오.

특정 형식인지 또는 특정 형식 만 필요로하는지 실제로 확인하려면 정규식이있는 preg_match()이 도움이 될 것입니다. 해당 페이지에 날짜 구문 분석의 예가 있다고 생각합니다. 그것은이 같은 것하지 않으면 :

if (preg_match('~[0-9]{2}-[0-9]{2}-[0-9]{4}~', $dateStr)) { echo 'Correct format'; }

그와 명백한 결함은 날짜 형식 시험을 통과 할 수 있지만, 유효한 날짜하지 않을 수 있습니다. 내 의견으로는, 사용자 입력에서 날짜를 받아들이고 strtotime/date를 사용하여 원하는 형식으로 가져옵니다.

+0

아주 좋은 것입니다. 고마워. – user401184

+0

고마워요. 나는 너희들을 아직 투표 할 수 없다. 나를 투표하고 평판을 15 가지로 만들어주세요. 나는 모두에게 +1을줍니다. – user401184

1

정확하게 이해한다면 문자열을 검사하여 MM-DD-YYYY 패턴을 따르고 싶습니까?

그렇다면 두 자리 수표를 제안합니다. 하나는 일반적인 숫자 패턴을 따르고, 다른 하나는 월이 처음이고 일수가 두 번째인지 확인하는 것입니다.

function checkDate($date) 
{ 

    if (preg_match("/[0|1][0-9]/[0-9][1-9]/[0-9]{4}/",$date) 
    { 
     if (substr($date,0,2)<=12 && substr($date,3,2)<=31) 
     { 
      return true; 
     } 
    } 
    return false 

} 

업데이트 : 추가 된 다른 제안대로, NullUser의 의견

+0

12/99/2000과 같은 잘못된 입력이 여전히 걸립니다. – NullUserException

+0

감사합니다. 나는 너희들을 아직 투표 할 수 없다. 나를 투표하고 15 명성에 저를 만들어주세요. 나는 모두에게 +1을 주겠다. – user401184

관련 문제