2012-12-15 4 views
1

메신저 preg_match_all을 사용하여 대문자로 시작하는 날짜와 단어를 확인하는 문제는 정규식 테스터에서이 정규식이 PHP 스크립트에서는 문제가되지 않기 때문에 날짜에 문제가 있습니다.PHP 정규식 preg_match_all이 올바르게 작동하지 않습니다

$pattern = "#(((0[1-9]|[12][0-9]|3[01])([\/\.\\\-])((0[1-9]|1[012])\11)?)(\d\d\d\d|\d\d))+|([A-Z][a-z]+)(\s[A-Z][a-z]+)*#"; 

나는 그것을이 일치 할 : 제대로 내 패턴이있다 "1990년 12월 10일"뿐만 아니라 당신의 도움에 대한 "12.10.90"

감사로!

+0

당신이 당신의 전체 코드를 보여 주시겠습니까; 당신이 작업하고있는 패턴 뿐만이 아닙니다. – Sampson

+1

http://stackoverflow.com/questions/141315/php-check-for-a-valid-date-weird-date-conversions – danronmoon

답변

5
$string = '12.10.1990 as well as 12.10.90'; 

preg_match_all('/[01]\d\.[0-3]\d\.\d{2,4}/', $string, $match); 

print_r($match); 

정규 표현식의 일치하는 부분에이 패턴을 사용하십시오. 휠을 다시 발명하려는 경우에도 마찬가지입니다. 날짜가 유효한지 더 잘 판단 할 수 있도록 도와주는 PHP 함수가 내장되어 있습니다.

사용 폭발() 다음 예를 들어이 기능으로 각 세그먼트를 넣어 :

$string = '12.10.1990'; 
//$string = '12.10.90'; 

$string = explode('.', $string); 
var_dump(checkdate($string[0], $string[1], $string[2])); 
관련 문제