php에서 preg_replace_callback_array ()는 정규 표현식에 따라 문자열을 교체 할 수 있고 콜백 함수를 사용하여 교체 로직을 처리 할 수있는 매우 강력한 기능입니다. preg_replace_callback_array ()를 사용하면 여러 정규 표현식 및 해당 콜백 기능을 전달하여 복잡한 교체 요구 사항을 유연하게 처리 할 수 있습니다. 그러나 경우에 따라 콜백 함수에서 외부 변수를 사용해야합니다. 이를 달성하기 위해 폐쇄를 결합하여이를 달성 할 수 있습니다.
이 기사에서는 Closures (익명 함수)를 사용하여 preg_replace_callback_array ()를 대체 할 때 외부 변수를 사용하는 방법을 설명합니다.
클로저는 PHP의 익명 기능으로 정의 할 때 외부 변수에 액세스하고 사용할 수 있습니다. 클로저는 외부 변수를 캡처하고 함수의 컨텍스트로 사용될 수 있습니다. 보통 함수와 달리, 클로저는 이름을 정의 할 때 이름을 지정할 필요가 없으며 일반적으로 전달되어 기능 객체 클래스라고합니다.
$variable = '외부 변수';
$closure = function () use ($variable) {
return '사용된 ' . $variable;
};
echo $closure(); // 산출 '사용된 외부 변수'
위의 예에서 $ variable 은 외부 변수이며, 폐쇄는 사용 키워드를 통해 캡처하고 클로저 내에서 액세스 할 수 있습니다.
preg_replace_callback_array () 함수는 연관 배열을 수락하고 배열의 키는 정규 표현식이며 값은 해당 콜백 함수입니다. 콜백 함수로 클로저를 전달하고 폐쇄 내부의 외부 변수를 사용할 수 있습니다.
$pattern1 = '/\bfoo\b/';
$pattern2 = '/\bbar\b/';
$variable = '콘텐츠를 바꾸십시오';
$patterns = [
$pattern1 => function ($matches) use ($variable) {
return $variable . ' - ' . $matches[0];
},
$pattern2 => function ($matches) use ($variable) {
return strtoupper($variable) . ' - ' . $matches[0];
}
];
$subject = 'foo bar';
$result = preg_replace_callback_array($patterns, $subject);
echo $result; // 산출 '콘텐츠를 바꾸십시오 - foo 콘텐츠를 바꾸십시오 - bar'
$ Patterns 배열에는 두 개의 정규 표현식과 해당 콜백 기능이 포함됩니다.
각 콜백 함수는 사용 키워드에 의해 외부 변수 $ 변수가 캡처되는 클로저입니다.
정규 표현식은 문자열의 Foo 및 Bar 와 일치하며 클로저는 일치하는 컨텐츠를 처리합니다.
URL이 포함 된 문자열이 있다고 가정하고 preg_replace_callback_array () 로 교체하고 외부 URL 도메인을 사용해야합니다.
$pattern1 = '/https?:\/\/(www\.)?example\.com/';
$pattern2 = '/https?:\/\/(www\.)?another-example\.com/';
$domain = 'm66.net'; // 외부 도메인 이름을 사용하십시오
$patterns = [
$pattern1 => function ($matches) use ($domain) {
return 'https://' . $domain . str_replace('example.com', '', $matches[0]);
},
$pattern2 => function ($matches) use ($domain) {
return 'https://' . $domain . str_replace('another-example.com', '', $matches[0]);
}
];
$subject = '입장 https://www.example.com 또는 https://another-example.com 더 많은 정보를 얻으십시오。';
$result = preg_replace_callback_array($patterns, $subject);
echo $result; // 산출 '입장 https://m66.net 더 많은 정보를 얻으십시오。'
우리는 각각 example.com 과 다른 -example.com 과 일치하는 두 개의 정규식을 정의합니다.
URL의 도메인 이름을 대체하려면 외부 변수 $ 도메인 ( m66.net 값이 있음)을 사용하십시오.
preg_replace_callback_array ()를 사용하면 문자열의 URL을 유연하게 처리하고 새 도메인 이름으로 바꿀 수 있습니다.
클로저와 preg_replace_callback_array () 함수를 결합하면 스트링 교체에서 외부 변수를 매우 편리하게 사용할 수 있습니다. 폐쇄를 통해 PHP를 사용하면 외부 변수를 콜백 함수로 전달하고 교체 로직에서 이러한 변수를 유연하게 사용할 수 있습니다. 이 기술은 특히 URL 교체, 복잡한 문자열 처리 등과 같이 교체 컨텐츠를 동적으로 수정 해야하는 시나리오에 특히 적합합니다.
이 기사가 폐쇄와 함께 preg_replace_callback_array () 에서 외부 변수 교체 로직을 사용하는 방법을 더 잘 이해하는 데 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 두십시오.