현재 위치: > 최신 기사 목록> preg_replace_callback_array 기본 사용법 세부 사항

preg_replace_callback_array 기본 사용법 세부 사항

M66 2025-06-03

PHP에서 정규 표현의 처리는 일상 개발에 없어서는 안될 부분입니다. 가독성과 유연성을 향상시키기 위해 PHP 7은 새로운 기능을 도입했습니다. preg_replace_callback_array . 이 기능은 정기적 인 매칭 및 콜백 처리의 장점을 결합하며 복잡한 대체 논리의 간결한 캡슐화입니다.

이 기사는 문자열을보다 효율적으로 처리하는 데 도움이되는 preg_replace_callback_array 의 기본 사용 및 실제 응용 시나리오를 심도에 대해 설명합니다.

1. 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 : 교체 수를 수신하기위한 선택적 매개 변수입니다.

2. 기본 사용 예제

다음은 두 개의 정규 표현식과 해당 콜백 기능을 사용하여 문자열을 처리하는 방법을 보여주는 간단한 예입니다.

 $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> 지원을 받으십시오。

3. 실제 응용 시나리오

1. 다중 모드의 균일 교체

전통적인 preg_replace_callback 에서 여러 패턴을 처리 해야하는 경우 종종 여러 처리 흐름을 작성해야합니다. preg_replace_callback_array를 사용하면 모든 논리를 중앙에서 관리 할 수 ​​있으며 명확한 구조와 유지 관리가 쉽습니다.

2. 풍부한 텍스트 구문 분석을 쉽게 구현합니다

예를 들어 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;

3. 고성능 배치 교체

preg_replace_callback 에 대한 여러 통화와 비교하여 preg_replace_callback_array는 한 번에 모든 일치 및 교체를 완료하여 특히 큰 텍스트 또는 복잡한 교체에서 성능 오버 헤드를 줄입니다.

4. 주목할만한 것들

  • PHP 버전은 7.0 이상이어야합니다.

  • 각 정규 표현식의 콜백 함수는 교체 결과를 반환해야합니다. 그렇지 않으면 교체가 실패하거나 빈 문자열이 발생합니다.

  • 교체 순서는 배열의 정의 순서에 따라 다르므로 종속성 순서가있을 때 배열의 순서에주의하십시오.

5. 요약

preg_replace_callback_array 는 매우 실용적인 기능으로, 특히 멀티 모달 텍스트 구문 분석 및 교체에 적합합니다. 이 기능을 합리적으로 사용함으로써 우리는 복잡한 정기 교체 작업을보다 간결하고 명확한 방식으로 처리하여 코드의 가독성과 유지 관리를 향상시킬 수 있습니다.

개발 포럼, 풍부한 텍스트 편집기 또는 간단한 데이터 청소에 관계없이 preg_replace_callback_array는 중요한 역할을 할 수 있습니다.

규칙 성을 사용하는 과정에서 어떤 어려움을 겪습니까? 의사 소통을위한 메시지를 남겨 주시기 바랍니다!