내 ISO 날짜가 패턴과 일치하지 않는 이유는 무엇입니까?
주어진 정규식은 다음과 같습니다.
/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/
"YYYY-MM-DD HH:MM:SS" 형식의 ISO 스타일 날짜와 일치합니다. 그러나 기준을 충족함에도 불구하고 false를 반환합니다. 문제는 표현식을 묶는 슬래시(/)에 있습니다.
PHP 정규 표현식 구분 기호
PHP에서 정규 표현식은 구분 기호(일반적으로 슬래시(/))로 묶어야 합니다. ), 그러나 큰따옴표(")도 사용할 수 있습니다. / 구분 기호는 정규식의 시작과 끝을 정의하고 충돌을 방지하는 데 사용됩니다.
문제 해결
문제를 해결하려면 다음을 확인하세요.
if(preg_match("/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/", $date) >= 1)
if(preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2}) \'([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/', $date) >= 1)
DateTime을 사용하는 대체 옵션 클래스
정규 표현식을 사용하는 대신 더욱 강력하고 안정적인 날짜 확인 및 조작 기능을 제공하는 PHP DateTime 클래스 사용을 고려해 보세요.
function validateDate($date, $format = 'Y-m-d H:i:s') { $d = DateTime::createFromFormat($format, $date); return $d && $d->format($format) == $date; }
이 함수는 다음에 대해 true를 반환합니다. 유효한 날짜는 거짓이고 유효하지 않은 날짜는 거짓입니다. ISO를 포함한 다양한 형식의 날짜를 확인하는 데 사용할 수 있습니다.
위 내용은 내 PHP ISO 날짜 정규식이 일치하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!