라이브러리
[PHP_CONFIG] pcre.recursion_limit - PCRE 정규식 재귀 제한 설정
PHP CONFIG - pcre.recursion_limit
PHP CONFIG는 PHP의 설정 파일로, PHP의 동작을 조정하는 데 사용됩니다. pcre.recursion_limit은 PCRE(Perl-Compatible Regular Expressions) 라이브러리의 recursion_limit 옵션입니다. 이 옵션은 정규식에서 recursion(재귀) 깊이를 제한하는 데 사용됩니다.
pcre.recursion_limit의 기본값
pcre.recursion_limit의 기본값은 100입니다. 이 값은 PHP가 정규식에서 recursion을 허용하는 최대 깊이를 의미합니다. 만약 recursion이 더 깊게 허용되어야 하는 경우, 이 값을 증가시켜야 합니다.
pcre.recursion_limit의 설정
pcre.recursion_limit을 설정하려면 php.ini 파일을 편집하거나 php.ini 파일의 내용을 수정하는 명령어를 사용할 수 있습니다.
1. php.ini 파일 편집
php.ini 파일을 편집하려면, PHP 설치 폴더의 php.ini 파일을 열어야 합니다. 이 파일은 일반적으로 C:Windowsphp.ini (Windows) 또는 /etc/php.ini (Linux/MacOS) 에 위치합니다.
#hostingforum.kr
ini
; PCRE recursion limit
pcre.recursion_limit = 100
위의 코드는 pcre.recursion_limit의 기본값을 100으로 설정합니다. 이 값을 변경하려면, 100을 원하는 값으로 수정하세요.
2. php.ini 파일의 내용 수정
php.ini 파일의 내용을 수정하려면, php.ini 파일을 열어 내용을 수정한 후 저장하세요.
#hostingforum.kr
bash
php -i | grep pcre.recursion_limit
위의 명령어를 실행하여 pcre.recursion_limit의 현재 값을 확인할 수 있습니다.
예제
pcre.recursion_limit의 예제를 살펴보겠습니다.
#hostingforum.kr
php
<?php
$pattern = '/(a(b(c(d(e(f(g(h(i(j(k)))))))))))/';
$subject = 'abcdefghijk';
$matches = array();
preg_match($pattern, $subject, $matches);
print_r($matches);
?>
위의 예제는 PCRE 정규식에서 recursion을 사용하는 예제입니다. 정규식 `(a(b(c(d(e(f(g(h(i(j(k))))))))))`은 'a'에서 시작하여 'k'까지 recursion을 허용합니다. 만약 pcre.recursion_limit이 100보다 작다면, 이 정규식은 recursion limit을 초과하여 에러를 발생시킵니다.
pcre.recursion_limit의 설정에 따른 결과
pcre.recursion_limit의 설정에 따라 결과가 달라집니다.
* pcre.recursion_limit = 100
+ recursion이 허용된 깊이가 100이므로, 위의 예제는 recursion limit을 초과하여 에러를 발생시킵니다.
* pcre.recursion_limit = 200
+ recursion이 허용된 깊이가 200이므로, 위의 예제는 정상적으로 실행됩니다.
결론적으로, pcre.recursion_limit의 설정은 PCRE 정규식에서 recursion을 허용하는 깊이를 제어합니다. 이 옵션을 설정하여 recursion limit을 조정하여 원하는 결과를 얻을 수 있습니다.
댓글목록
등록된 댓글이 없습니다.