
PHP에서 PCRE recursion limit를 설정하는 방법은 여러 가지가 있습니다.
1. `pcre.recursion_limit` 옵션을 사용할 수 있습니다. 이 옵션은 PHP.ini 파일에서 설정하거나, PHP 코드 내에서 `ini_set` 함수를 사용하여 동적으로 설정할 수 있습니다.
#hostingforum.kr
php
// PHP.ini 파일에서 설정
pcre.recursion_limit = 1000
// PHP 코드 내에서 설정
ini_set('pcre.recursion_limit', 1000);
2. `preg_match` 함수의 두 번째 인자에 `PREG_RECURSION_LIMIT` 플래그를 사용할 수 있습니다. 이 방법은 `pcre.recursion_limit` 옵션보다 더 세밀하게 recursion limit를 설정할 수 있습니다.
#hostingforum.kr
php
$pattern = '/^(?:(?:[^"\\]|\\.|\\\n)*?"(?:\\.|[^"\\])*?"(?:\n(?!\s*(?:\?.*|[^\S\n]*\n)))*|[^\S\n]+)*(?:(?:[^"\\]|\\.|\\\n)*?"(?:\\.|[^"\\])*?"(?:\n(?!\s*(?:\?.*|[^\S\n]*\n)))*|[^\S\n]+)*$/';
$subject = '정규식 테스트';
$flags = PREG_RECURSION_LIMIT | PREG_OFFSET_CAPTURE;
preg_match($pattern, $subject, $matches, -1, $flags);
3. `preg_match` 함수의 두 번째 인자에 `PREG_UNMATCHED_ALL` 플래그를 사용할 수 있습니다. 이 방법은 `pcre.recursion_limit` 옵션보다 더 세밀하게 recursion limit를 설정할 수 있습니다.
#hostingforum.kr
php
$pattern = '/^(?:(?:[^"\\]|\\.|\\\n)*?"(?:\\.|[^"\\])*?"(?:\n(?!\s*(?:\?.*|[^\S\n]*\n)))*|[^\S\n]+)*(?:(?:[^"\\]|\\.|\\\n)*?"(?:\\.|[^"\\])*?"(?:\n(?!\s*(?:\?.*|[^\S\n]*\n)))*|[^\S\n]+)*$/';
$subject = '정규식 테스트';
$flags = PREG_UNMATCHED_ALL | PREG_OFFSET_CAPTURE;
preg_match($pattern, $subject, $matches, -1, $flags);
4. `preg_match` 함수의 두 번째 인자에 `PREG_NO_ERROR` 플래그를 사용할 수 있습니다. 이 방법은 `pcre.recursion_limit` 옵션보다 더 세밀하게 recursion limit를 설정할 수 있습니다.
#hostingforum.kr
php
$pattern = '/^(?:(?:[^"\\]|\\.|\\\n)*?"(?:\\.|[^"\\])*?"(?:\n(?!\s*(?:\?.*|[^\S\n]*\n)))*|[^\S\n]+)*(?:(?:[^"\\]|\\.|\\\n)*?"(?:\\.|[^"\\])*?"(?:\n(?!\s*(?:\?.*|[^\S\n]*\n)))*|[^\S\n]+)*$/';
$subject = '정규식 테스트';
$flags = PREG_NO_ERROR | PREG_OFFSET_CAPTURE;
preg_match($pattern, $subject, $matches, -1, $flags);
이러한 방법 중 하나를 사용하여 recursion limit를 설정하면, PHP에서 PCRE recursion limit를 설정할 수 있습니다.
2025-08-08 22:06