ISO 날짜 패턴 일치가 실패하는 이유는 무엇입니까?
제공된 정규 표현식이 전달 누락으로 인해 ISO 스타일 날짜와 올바르게 일치하지 않습니다. 패턴의 시작과 끝 부분에 슬래시("/")가 있습니다. 이러한 구분 기호는 PHP의 정규식 구문에서 매우 중요합니다. 수정된 패턴은 다음과 같습니다.
/^(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2}) (?P<hour>[1-2]{1}\d{1}):(?P<min>[0-5]{1}\d{1}):(?P<sec>[0-5]{1}\d{1})$/
이 패턴은 연도, 월, 일, 시, 분, 초에 대한 6개의 캡처 그룹을 정의합니다.
대체 접근 방식: DateTime 사용 클래스
정규식을 사용하는 것도 옵션일 수 있지만, 더 우아한 해결책은 PHP의 DateTime을 사용하는 것입니다. class:
function validateDate($date, $format = 'Y-m-d H:i:s') { $d = DateTime::createFromFormat($format, $date); return $d && $d->format($format) == $date; }
이 함수는 날짜 문자열과 선택적 형식을 허용합니다. createFromFormat 메소드를 사용하여 DateTime 객체를 생성하고 생성된 객체가 유효하고 원래 날짜와 일치하는지 확인합니다.
validateDate 함수는 날짜를 검증하는 더욱 강력하고 다양한 방법을 제공합니다. 다양한 형식을 지원하며 다양한 세부 수준으로 날짜를 확인할 수 있습니다.
위 내용은 내 PHP ISO 날짜 정규 표현식이 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!