라이브러리
[PHP_CONFIG] pcre.backtrack_limit - PCRE 정규식 백트래킹 제한 설정
PHP CONFIG 에서 pcre.backtrack_limit는 PCRE (Perl-Compatible Regular Expressions) 엔진의 백트랙 제한을 의미합니다. 백트랙은 정규식 매칭 시에 패턴이 매칭되지 않을 때, 이전 상태로 돌아가서 다시 시도하는 과정을 말합니다. 이 제한은 PHP가 정규식 매칭 시에 사용할 수 있는 백트랙의 최대 수를 지정합니다.
기본적으로 PHP의 pcre.backtrack_limit는 100000으로 설정되어 있습니다. 이 값을 변경하면 PHP가 정규식 매칭 시에 사용할 수 있는 백트랙의 최대 수를 변경할 수 있습니다.
예를 들어, 다음 코드는 pcre.backtrack_limit를 1000으로 설정한 후, 정규식 매칭을 시도하는 예제입니다.
#hostingforum.kr
php
ini_set('pcre.backtrack_limit', 1000);
$pattern = '/(a+){1000}/';
$string = str_repeat('a', 1000);
if (preg_match($pattern, $string, $matches)) {
echo "정규식 매칭 성공
";
} else {
echo "정규식 매칭 실패
";
}
이 예제에서는 pcre.backtrack_limit를 1000으로 설정한 후, `(a+){1000}` 형식의 정규식을 사용하여 1000개의 'a' 문자열을 매칭하는 시도를 합니다. 이 정규식은 1000개의 'a' 문자열을 매칭할 때까지 백트랙을 반복합니다.
만약 pcre.backtrack_limit가 1000보다 작다면, 정규식 매칭 시도 시에 "Warning: preg_match(): The PCRE regular expression pattern contains a backtracking control verb that occurs before an unlimited repeat in a subpattern that can match an empty string" 경고 메시지가 출력됩니다.
또한, pcre.backtrack_limit를 너무 낮게 설정하면, PHP가 정규식 매칭 시에 사용할 수 있는 백트랙의 최대 수가 부족하여, 정규식 매칭이 실패할 수 있습니다.
따라서, pcre.backtrack_limit를 설정할 때는, PHP가 정규식 매칭 시에 사용할 수 있는 백트랙의 최대 수를 충분히 설정해야 합니다.
pcre.backtrack_limit를 설정하는 방법
pcre.backtrack_limit를 설정하는 방법은 다음과 같습니다.
1. `php.ini` 파일을 편집합니다.
2. `pcre.backtrack_limit` 설정을 변경합니다.
3. PHP를 재시작합니다.
또는, PHP를 실행할 때 `ini_set` 함수를 사용하여 pcre.backtrack_limit를 설정할 수 있습니다.
#hostingforum.kr
php
ini_set('pcre.backtrack_limit', 1000);
pcre.backtrack_limit의 기본값
pcre.backtrack_limit의 기본값은 100000입니다.
pcre.backtrack_limit의 최소값
pcre.backtrack_limit의 최소값은 1입니다.
pcre.backtrack_limit의 최대값
pcre.backtrack_limit의 최대값은 PHP의 메모리 제한에 따라 달라집니다. 일반적으로, pcre.backtrack_limit의 최대값은 1000000 이상입니다.
pcre.backtrack_limit의 영향
pcre.backtrack_limit의 영향은 다음과 같습니다.
* 정규식 매칭 시에 사용할 수 있는 백트랙의 최대 수를 변경합니다.
* PHP가 정규식 매칭 시에 사용할 수 있는 백트랙의 최대 수를 충분히 설정해야 합니다.
* pcre.backtrack_limit를 너무 낮게 설정하면, PHP가 정규식 매칭 시에 사용할 수 있는 백트랙의 최대 수가 부족하여, 정규식 매칭이 실패할 수 있습니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.