>백엔드 개발 >PHP 튜토리얼 >내 PHP 정규 표현식이 ISO 날짜 형식의 유효성을 검사하지 못하는 이유는 무엇입니까?

내 PHP 정규 표현식이 ISO 날짜 형식의 유효성을 검사하지 못하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-15 11:50:11415검색

Why is my PHP regex failing to validate an ISO date format?

Regex가 ISO 날짜 형식을 검증하지 못함

질문:

왜 ISO 스타일 날짜와 일치하도록 고안된 정규식을 따르며 다음과 같이 작동합니다. 예상되는가?

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)
    // ...

답변:

정규 표현식 자체는 유효하지만 여기서 문제는 슬래시 사용에 있습니다. " /"를 구분 기호로 사용합니다. 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)
    // ...

이제 일반 따옴표 표현식은 ISO 스타일 날짜와 정확하게 일치합니다.

DateTime 사용의 장점 클래스:

수정된 정규식은 ISO 날짜의 유효성을 검사하지만 날짜 및 시간 유효성 검사 및 조작을 위해 DateTime 클래스를 고려해 볼 가치가 있습니다. DateTime 클래스는 더 포괄적이며 광범위한 날짜 및 날짜를 ​​처리할 수 있습니다. 시간 형식.

다음 예에서는 DateTime 클래스를 사용하여 ISO 스타일 날짜의 유효성을 검사하는 방법을 보여줍니다.

function validateDate($date, $format = 'Y-m-d H:i:s')
{
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) == $date;
}

위 내용은 내 PHP 정규 표현식이 ISO 날짜 형식의 유효성을 검사하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.