현재 위치: > 최신 기사 목록> preg_replace_callback 콜백 함수 매개 변수는 무엇입니까? 각 매개 변수의 역할을 자세히 설명하십시오

preg_replace_callback 콜백 함수 매개 변수는 무엇입니까? 각 매개 변수의 역할을 자세히 설명하십시오

gitbox 2025-08-18

PHP에서 preg_replace_callback 은 매우 실용적인 일반 대체 기능으로, 콜백 함수를 사용하여 정규 표현식 일치에 따라 일치 결과를 처리 할 수 있습니다. 특히 컨텐츠와 일치하는 동적 수정이 필요한 경우 복잡한 교체 요구 사항에 종종 사용됩니다. 콜백 함수의 매개 변수를 이해하는 것은이 기능을 올바르게 사용하는 데 중요합니다. 이 기사는 preg_replace_callback 콜백 함수에서 각 매개 변수의 역할을 하나씩 구문 분석합니다.

preg_replace_callback 함수 소개

preg_replace_callback 함수는 정규 표현식과 일치하는 부분을 대체하기 위해 콜백 함수를 실행하는 데 사용됩니다. 기본 구문은 다음과 같습니다.

 <span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$callback</span></span><span>, </span><span><span class="hljs-variable">$subject</span></span><span>);
</span></span>
  • $ 패턴 : 정규 표현 패턴.

  • $ 콜백 : 일치하는 결과를 처리하는 데 사용되는 콜백 기능.

  • $ 제목 : 일치하고 교체 할 문자열.

콜백 함수의 매개 변수 분석

콜백 함수는 preg_replace_callback 의 핵심입니다. 일반적으로 일치하는 컨텐츠에 특수 처리가 필요한 경우 콜백 기능을 통해 모든 일치를 작동합니다. 콜백 함수의 정의는 익명 함수이거나 명명 된 함수 일 수 있습니다. 어느 형태에서든, 콜백 함수는 특정 수의 매개 변수를 허용합니다.

1. 결과 배열과 일치합니다 (일치)

콜백 함수의 첫 번째 매개 변수는 정규 표현식과 일치하는 모든 결과를 포함하는 배열입니다. 그 내용에는 다음이 포함됩니다.

  • 첫 번째 요소 ( $ 일치 [0] )는 전체 일치 문자열입니다.

  • 후속 요소 ( $ matches [1] , $ matches [2] , ...)는 각 캡처 그룹의 일치 결과입니다 (즉, 정규 표현식의 괄호 부분).

예를 들어, 다음과 같은 정규 표현이 있다고 가정합니다.

 <span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/(\d+)\-(\d+)/'</span></span><span>;
</span><span><span class="hljs-variable">$subject</span></span><span> = </span><span><span class="hljs-string">'12-34, 56-78'</span></span><span>;
</span></span>

그런 다음 preg_replace_callback을 사용하여 처리하십시오.

 <span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, function(</span><span><span class="hljs-variable">$matches</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$matches</span></span><span>);
}, </span><span><span class="hljs-variable">$subject</span></span><span>);
</span></span>

실행 결과는 다음과 같습니다.

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; </span><span><span class="hljs-number">12</span></span><span>-</span><span><span class="hljs-number">34</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">12</span></span><span>
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; </span><span><span class="hljs-number">34</span></span><span>
)
</span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; </span><span><span class="hljs-number">56</span></span><span>-</span><span><span class="hljs-number">78</span></span><span>
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; </span><span><span class="hljs-number">56</span></span><span>
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; </span><span><span class="hljs-number">78</span></span><span>
)
</span></span>
  • $ matches [0]는 일치하는 완전한 문자열입니다.

  • $ matches [1]$ matches [2] 는 일치하는 하위 패턴 부분입니다.

2. 콜백 함수의 반환 값

콜백 함수의 반환 값은 교체 결과로 사용됩니다. 이는 콜백 함수가 단순한 데이터 처리 함수가 아니라 리턴 값이 대체 컨텐츠에 직접적인 영향을 미친다는 것을 의미합니다. 콜백 함수가 문자열을 반환하면 문자열이 원래 일치하는 부분을 교체합니다.

예를 들어:

 <span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/(\d+)\-(\d+)/'</span></span><span>;
</span><span><span class="hljs-variable">$subject</span></span><span> = </span><span><span class="hljs-string">'12-34, 56-78'</span></span><span>;

</span><span><span class="hljs-variable">$replaced</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace_callback</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, function(</span><span><span class="hljs-variable">$matches</span></span><span>) {
    </span><span><span class="hljs-comment">// 두 숫자의 합을 교체로 사용하십시오</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>] + </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>];
}, </span><span><span class="hljs-variable">$subject</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$replaced</span></span><span>;
</span></span>

출력 결과는 다음과 같습니다.

 <span><span>46, 134
</span></span>

이 예에서는 일치하는 숫자를 추가하고 원래 일치 문자열을 결과로 바꿉니다.

3. 기타 선택적 매개 변수 : 오프셋 및 제한

콜백 함수 자체는 $ 오프셋$ 한계 매개 변수를 통해보다 자세한 정보를 얻을 수도 있습니다. 이 매개 변수는 일반적으로 preg_replace_callback 에 의해 내부적으로 처리되지만 preg_replace_callback_array를 통해 이러한 매개 변수를보다 유연하게 제어 할 수 있습니다. 일반적으로 일반적으로 사용하면 콜백 함수의 첫 번째 매개 변수 ( $ 일치 ) 및 리턴 값이 충분합니다.

결론적으로

preg_replace_callback 함수와 콜백 기능은 유연성을 제공하여 개발자가 일치하는 컨텐츠를 기반으로 동적으로 대체 할 수 있도록합니다. 콜백 함수의 첫 번째 매개 변수 $ 일치는 전체 일치 및 캡처 된 그룹 정보를 포함하여 일치에 대한 자세한 정보를 제공하는 반면, 콜백 함수의 리턴 값은 대체 된 컨텐츠를 직접 결정합니다. 이러한 기본 개념을 마스터 한 후 preg_replace_callback을 사용하여 복잡한 일반 교체 작업을 구현할 수 있습니다.