preg_match 반환 2

3171 단어 PHPPHP7.3빈대

https://bugs.php.net/bug.php?id=78853


preg_match 일치 모드에서는 1을, 일치하지 않을 때는 0을, 오류가 발생하면 가짜를 반환합니다.

그래서 이런 정규 표현을 해보자.
var_dump(preg_match('/^|\d{1,2}$/', "7"));
결실

이거 뭐야?
2 돌려줬어요.
양식이 바뀌었지만 문서가 업데이트되지 않아 낡았다고 생각했다영문판도'1 또는 0 또는 휴가 반환'이라고 잘 적혀 있고 문서도 낡지 않은 것 같다.
PHP7.3부터 있었던 것 같아서 이유를 조금 찾으려고 소스를 보러 갔다
7.3.0
7.2.24
포기했어.
참고로 PHP70에 컴파일 옵션pcre.jit이 추가되어 정규 표현식 JIT 사용로 변경되었습니다.
이 JIT용 메모리는 의외로 작다. 예를 들어 아래의 정규 표현식pcre.jit의 상태에 따라 반환값이 변화할 수 있다.
var_dump(preg_match('/^(A{1,2}B)+$/',str_repeat('AB',8192)));
pcre.jit=0면 되돌아오는 값이 1입니다.
그러나 기본pcre.jit=1일 경우 반환값이 가짜preg_last_error일 경우 JIT용 메모리 부족PREG_JIT_STACKLIMIT_ERROR을 반환한다.
그러나 pcre.jit=0 최초의 정규 표현식에서도 2로 되돌아왔다.
preg_last_error에서도 오류가 발생하지 않았음을 확인하기 때문에pcre.jit 특별한 관계가 없는 것 같습니다.
그럼 이 오류는 며칠 전수정됨.
7.4로 병합로 인해 2019/11/28에 발표될 예정인 PHP7.4.0 정식 버전은 이미 수정되었다고 생각합니다.
그리고 안쪽은 if 하나만 꽂았어요.인데 어떻게 해야 할지 모르겠어요.

좋은 웹페이지 즐겨찾기