PHP 개발에서 문자열 교체는 매우 일반적인 작업입니다. 다른 마커 세트에 따라 다양한 방식으로 텍스트를 교체해야 할 때 preg_replace_callback_array 가 특히 편리합니다.
이 기사에서는 preg_replace_callback_array를 사용하여 "마크 구동"데이터 주입 메커니즘을 구현하는 방법을 보여 주므로 템플릿 문자열에 데이터를 유연하게 포함시킬 수 있습니다.
preg_replace_callback_array 는 PHP 7에 도입 된 함수입니다. 정규식 세트와 해당 콜백 함수 세트를 통해 문자열을 교체 할 수 있습니다.
서명은 다음과 같습니다.
preg_replace_callback_array(array $patterns_and_callbacks, string $subject, int $limit = -1, int &$count = null): string
예를 들어 여러 다른 유형의 태그가 포함 된 텍스트 단락이있는 상황을 상상해보십시오.
방문에 오신 것을 환영합니다[[url:/welcome]],현재 시간은입니다{{time}}。
[[url :/Welcome]]을 하이퍼 링크로, {{time}}을 현재 시간으로 바꾸고 싶습니다.
우리는 태그와 일치하기 위해 두 가지 정규식을 사용합니다.
\ [\ [url : (.*?) \] \]는 URL 유형의 태그와 일치하는 데 사용됩니다.
\ {\ {time \} \}는 타임 스탬프와 일치하는 데 사용됩니다.
$template = '방문에 오신 것을 환영합니다[[url:/welcome]],현재 시간은입니다{{time}}。';
$patterns = [
'/\[\[url:(.*?)\]\]/' => function ($matches) {
$path = $matches[1];
return '<a href="https://m66.net' . htmlspecialchars($path) . '">여기를 클릭하십시오</a>';
},
'/\{\{time\}\}/' => function () {
return date('Y-m-d H:i:s');
},
];
$output = preg_replace_callback_array($patterns, $template);
echo $output;
방문에 오신 것을 환영합니다<a href="https://m66.net/welcome">여기를 클릭하십시오</a>,현재 시간은입니다2025-04-21 14:30:00。
참고 : 실제 시간은 달리는 시간에 따라 다릅니다.
이 접근법은 전통적인 다중 preg_replace_callback 또는 문자열 교체에 비해 몇 가지 장점이 있습니다.
명확한 구조 : 모든 패턴과 교체 로직은 하나의 어레이에 집중되어 유지하기 쉽습니다.
보다 효율적인 실행 : 모든 모드는 여러 텍스트 스캔없이 한 번에 처리 할 수 있습니다.
강력한 확장 성 : 새 태그를 추가하려면 배열에 항목을 추가하면 다른 코드를 수정할 필요가 없습니다.
사용자 이름, 랜덤 숫자 등과 같은보다 동적 태그를 지원하려면 $ Patterns Array를 계속 확장하십시오.
$patterns['/\{\{user\}\}/'] = function () {
return 'Xiao Ming';
};
$patterns['/\{\{rand\}\}/'] = function () {
return rand(1, 100);
};
그런 다음 다음과 같은 템플릿에서 사용하십시오.
환영,{{user}}!당신의 행운의 번호는:{{rand}}。
preg_replace_callback_array를 사용하여 태그 중심 데이터 분사 엔진을 쉽게 구현할 수 있습니다. 그것은 의미 론적 일뿐 만 아니라 확장 가능성이 높으며 템플릿 시스템, 컨텐츠 처리, 풍부한 텍스트 탈출 및 기타 시나리오에 사용하기에 매우 적합합니다.
이 기사 가이 기능을 이해하고 사용하는 데 도움이되기를 바랍니다. 경량 템플릿 엔진 또는 컨텐츠 렌더링 도구를 개발하는 경우이 방법을 고려하여 코드의 품질과 유연성을 향상시킵니다.