PHP에서 정규 표현의 처리는 일상 개발에 없어서는 안될 부분입니다. 가독성과 유연성을 향상시키기 위해 PHP 7은 새로운 기능을 도입했습니다. 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]])
$ patterns_and_callbacks : 연관 배열, 키는 정규식이며 값은 해당 콜백 함수입니다.
$ 제목 : 대상 문자열을 교체합니다.
$ 한도 : 선택적 매개 변수, 최대 교체 수를 지정합니다.
$ count : 교체 수를 수신하기위한 선택적 매개 변수입니다.
다음은 두 개의 정규 표현식과 해당 콜백 기능을 사용하여 문자열을 처리하는 방법을 보여주는 간단한 예입니다.
$text = '공식 웹 사이트를 방문하십시오:http://m66.net 또는 이메일을 보내십시오 support@m66.net 지원을 받으십시오。';
$result = preg_replace_callback_array([
// 성냥URL
'/https?:\/\/[^\s]+/i' => function ($matches) {
return '<a href="' . $matches[0] . '">' . $matches[0] . '</a>';
},
// 성냥Email주소
'/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/i' => function ($matches) {
return '<a href="mailto:' . $matches[0] . '">' . $matches[0] . '</a>';
}
], $text);
echo $result;
산출:
공식 웹 사이트를 방문하십시오:<a href="http://m66.net">http://m66.net</a> 또는 이메일을 보내십시오 <a href="mailto:support@m66.net">support@m66.net</a> 지원을 받으십시오。
전통적인 preg_replace_callback 에서 여러 패턴을 처리 해야하는 경우 종종 여러 처리 흐름을 작성해야합니다. preg_replace_callback_array를 사용하면 모든 논리를 중앙에서 관리 할 수 있으며 명확한 구조와 유지 관리가 쉽습니다.
예를 들어 URL, 이메일, 이모티콘 등을 자동으로 HTML 태그로 변환하면 Preg_replace_callback_array 의 강점입니다.
$text = '이 링크를 참조하십시오:https://m66.net,이메일을 보내십시오 hello@m66.net,그리고 웃는 얼굴 :)';
$result = preg_replace_callback_array([
'/https?:\/\/[^\s]+/' => function ($m) {
return '<a href="' . $m[0] . '">' . $m[0] . '</a>';
},
'/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/i' => function ($m) {
return '<a href="mailto:' . $m[0] . '">' . $m[0] . '</a>';
},
'/:\)/' => function () {
return '??';
}
], $text);
echo $result;
preg_replace_callback 에 대한 여러 통화와 비교하여 preg_replace_callback_array는 한 번에 모든 일치 및 교체를 완료하여 특히 큰 텍스트 또는 복잡한 교체에서 성능 오버 헤드를 줄입니다.
PHP 버전은 7.0 이상이어야합니다.
각 정규 표현식의 콜백 함수는 교체 결과를 반환해야합니다. 그렇지 않으면 교체가 실패하거나 빈 문자열이 발생합니다.
교체 순서는 배열의 정의 순서에 따라 다르므로 종속성 순서가있을 때 배열의 순서에주의하십시오.
preg_replace_callback_array 는 매우 실용적인 기능으로, 특히 멀티 모달 텍스트 구문 분석 및 교체에 적합합니다. 이 기능을 합리적으로 사용함으로써 우리는 복잡한 정기 교체 작업을보다 간결하고 명확한 방식으로 처리하여 코드의 가독성과 유지 관리를 향상시킬 수 있습니다.
개발 포럼, 풍부한 텍스트 편집기 또는 간단한 데이터 청소에 관계없이 preg_replace_callback_array는 중요한 역할을 할 수 있습니다.
규칙 성을 사용하는 과정에서 어떤 어려움을 겪습니까? 의사 소통을위한 메시지를 남겨 주시기 바랍니다!