preg_match(): 잘못된 문자 클래스 범위로 인해 컴파일 실패
오류 메시지 "preg_match(): 컴파일 실패: 잘못된 범위 오프셋 20의 문자 클래스"는 정규식 패턴에 잘못된 문자 클래스 범위가 포함되어 있음을 나타냅니다. 이 경우, 서버에서 PHP를 업그레이드한 후 갑자기 문제가 나타났는데, 그 이유를 살펴보겠습니다.
오류 원인:
PHP 7.3 PCRE(Perl Compatible Regular Expressions) 엔진을 PCRE2로 업그레이드하여 더욱 엄격한 패턴 검증을 포함하여 몇 가지 변경 사항을 가져왔습니다. 특히 하이픈(-) 문자는 이제 문자 클래스에서 다르게 처리됩니다.
코드 조각:
제공된 코드는 정규식을 사용하여 사용자 이름을 확인합니다.
/^[a-z0-9]([0-9a-z_-\s])+$/i
이전 버전의 PHP에서는 하이픈을 이스케이프하거나 하이픈이 있는 위치에 배치하면 문자 클래스 내 어디에서나 사용할 수 있었습니다. 범위의 표시기로 해석될 수 없습니다.
PHP 7.3의 영향:
PCRE2를 사용하면 하이픈 문자 클래스에서 이스케이프()가 더 이상 무시되지 않습니다. . 이는 PHP 7.3 이상에서 위의 코드를 다음과 같이 업데이트해야 함을 의미합니다.
/^[a-z0-9]([0-9a-z_-]\s)$/i
해결책:
컴파일 오류를 해결하려면 하이픈 문자가 있는지 확인하세요. 수업은 다음 규칙을 따릅니다.
추가 정보:
위 내용은 PHP 7.3으로 업그레이드한 후 '문자 클래스의 잘못된 범위' 오류로 인해 PHP preg_match()가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!