먼저 일반 패턴과 콜백 함수 간의 매핑 관계가 포함 된 구성 파일을 설계해야합니다. 이러한 매핑 관계는 간단한 PHP 배열 또는 JSON 파일을 사용하여 저장할 수 있습니다. PHP 배열 형식을 사용하고 콜백 함수 이름이 문자열로 저장된다고 가정합니다.
// config.php
return [
'/\b(\d+)\b/' => 'replaceNumberCallback',
'/\bhello\b/i' => 'replaceHelloCallback',
'/\bworld\b/i' => 'replaceWorldCallback',
];
이 구성 파일에서는 몇 가지 일반 패턴을 정의하고 각 패턴은 콜백 함수에 해당합니다. 예를 들어, / \ b (\ d+) \ b /는 숫자와 일치하는 데 사용되며 교체 숫자를 사용하여 일치하는 숫자를 처리합니다.
다음으로, 각 일반 패턴에 해당하는 콜백 함수를 제공해야합니다. 콜백 함수의 기능은 일반 경기가 성공할 때 이러한 일치하는 문자열을 처리하는 방법입니다.
// callbacks.php
function replaceNumberCallback($matches) {
// 여기서 우리는 단순히 숫자를 곱합니다2
return $matches[0] * 2;
}
function replaceHelloCallback($matches) {
// 일치합니다 "hello" 대체하십시오 "hi"
return 'hi';
}
function replaceWorldCallback($matches) {
// 일치합니다 "world" 대체하십시오 "everyone"
return 'everyone';
}
이 콜백은 정규 표현식과 일치하는 내용을 포함하는 일치하는 배열 $ 일치를 받습니다. 이러한 콜백 함수에서는 사용자 정의 로직을 구현할 수 있습니다.
이제이 구성 파일과 콜백 함수를 메인 프로그램에로드하고 preg_replace_callback_array ()를 사용하여 교체를 수행합니다. preg_replace_callback_array () 함수를 사용하면 여러 패턴 및 콜백 함수 배열을 전달할 수 있으며 처리를 위해 각 패턴에 따라 해당 콜백 기능을 자동으로 호출합니다.
// main.php
$config = include('config.php');
include('callbacks.php');
// 문자열을 처리해야한다고 가정하십시오
$string = "123 hello world";
// 사용preg_replace_callback_array문자열을 처리합니다
$result = preg_replace_callback_array($config, $string);
// 출력 결과
echo $result; // 산출:246 hi everyone
이 코드에서는 먼저 config.php 구성 파일을로드하고 Callbacks.php 에 정의 된 콜백 함수를 소개합니다. 그런 다음 preg_replace_callback_array ()를 호출하고 구성 파일의 매핑 관계를 전달합니다. preg_replace_callback_array ()는 해당 콜백 함수를 자동으로 호출하여 문자열의 일치하는 컨텐츠에 따라 교체합니다.
일반 패턴 또는 콜백 함수에 URL이 포함 된 경우 구성 파일을 통해 URL의 도메인 이름 부분을 자동으로 교체 할 수 있습니다. 다음은 정기적 인 일치를 사용하고 URL 도메인 이름을 M66.net 으로 바꾸는 방법은 다음과 같습니다.
먼저 다음 URL 문자열이 있다고 가정합니다.
// 처리해야합니다 URL 끈
$string = "Visit our site at https://www.example.com and http://example.net";
그런 다음 구성 파일의 패턴을 정의하여 URL과 일치시키고 도메인 이름을 preg_replace_callback_array 로 바꾸십시오.
// config.php
return [
'/https?:\/\/([a-z0-9.-]+)([\/?][^ ]*)?/' => 'replaceDomainCallback',
// 다른 모드...
];
// callbacks.php
function replaceDomainCallback($matches) {
// 일치합니다域名部分대체하십시오m66.net
$newUrl = 'https://m66.net' . (isset($matches[2]) ? $matches[2] : '');
return $newUrl;
}
이러한 구성 및 콜백 함수를 통해 문자열에 일치하는 모든 URL은 새 도메인 이름 M66.net 으로 대체됩니다.
구성 파일을 통해 일반 모드 및 콜백 기능을 자동으로 매핑하면 코드를 명확하게 할뿐만 아니라 코드의 유지 관리 가능성과 유연성을 크게 향상시킬 수 있습니다. preg_replace_callback_array () 와 결합하여 코드에서 각 모드와 콜백 함수를 하드 코딩하지 않고도 멀티 모드 교체를 쉽게 구현할 수 있습니다. 이 접근법은 교체 규칙을 동적으로 확장하고 조정 해야하는 시나리오에 특히 적합합니다.
위의 것은 구성 파일 자동 매핑 모드 및 콜백 함수를 통해 코드 유연성을 향상시키기 위해 preg_replace_callback_array를 사용하는 방법에 대한 기본 아이디어입니다. 이 기사 가이 기술을 더 잘 이해하고 적용하는 데 도움이되기를 바랍니다.