PHP 5.3.0부터 POSIX 정규식 확장은 더 이상 사용되지 않습니다. POSIX 정규식과 PCRE 정규식 사이에는 몇 가지 차이점이 있으며, 이 문서에는 PCRE로 전환할 때 알아야 할 가장 중요한 차이점이 나열되어 있습니다.
PCRE 함수를 사용하려면 패턴을 구분 기호로 닫아야 합니다.
POSIX와 달리 PCRE 확장에는 대소문자를 구분하는 전용 기능이 없습니다. 대신 지원에서는 i(PCRE_CASELESS) 모드 수정자를 사용하여 동일한 작업을 수행합니다. 다른 패턴 수정자를 사용하여 일치 전략을 변경할 수도 있습니다.
POSIX 함수는 왼쪽부터 가장 긴 일치 항목을 찾지만 PCRE는 첫 번째 적법한 일치 항목 이후에 중지됩니다. 문자열이 일치하지 않으면 별 차이가 없지만 일치하면 결과와 속도에 차이가 발생합니다. 이러한 차이점을 설명하려면 다음 예를 고려하십시오(Jeffrey Friedl의 책 Mastering Regular Expressions에서 발췌). one(self)?(selfsufficient)? 패턴을 사용하여 oneselfsufficient 문자열을 일치시키면 PCRE는 oneself와 일치하지만 POSIX를 사용하면 결과는 전체 문자열 oneselfsufficient가 됩니다. 두 부분 문자열 모두 원래 문자열과 일치하지만 POSIX는 가장 긴 문자열을 결과로 처리합니다.
함수 비교표
POSIX
PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() preg_replace()
ereg() preg_match()
split() preg_split()
spliti() preg_split()
sql_regcase() 해당 함수 없음