현재 위치: > 최신 기사 목록> 전화 번호 또는 이메일을 자동으로 식별하고 교체합니다

전화 번호 또는 이메일을 자동으로 식별하고 교체합니다

M66 2025-06-02

php에서 preg_replace_callback_array는 패턴 일치하고 텍스트를 교체하는 데 도움이되는 매우 강력한 기능입니다. 콜백 함수를 사용하여 일치 결과를 처리함으로써 매우 유연한 제어로 대체 된 컨텐츠를 제어 할 수 있습니다. 이 기사에서는 preg_replace_callback_array 함수를 사용하여 텍스트의 전화 번호와 이메일 주소를 자동으로 식별하고 교체하는 방법을 소개합니다.

1. preg_replace_callback_array 함수 소개

preg_replace_callback_array 함수는 일반적인 preg_replace 와 유사한 PHP의 정규식 교체 함수이지만 배열을 인수로 받아들이고 각 일반 패턴은 콜백 함수에 해당합니다. 이러한 방식으로, 우리는 일치하는 유형 (예 : 전화 번호, 이메일 등)을 기반으로 다른 교체 작업을 수행 할 수 있습니다.

기능 프로토 타입 :

 preg_replace_callback_array(array $patterns_and_callbacks, string $subject);
  • $ patterns_and_callbacks : 키가 정규식 패턴이고 값이 해당 콜백 함수 인 배열.

  • $ 제목 : 정기적 인 교체 작업이 수행되는 입력 된 문자열.

2. preg_replace_callback_array를 사용하여 전화 번호를 식별하고 교체하십시오

먼저 전화 번호와 일치하기 위해 정규 표현을 작성해야합니다. 전화 번호에는 여러 유형이 있지만 일반적인 형식에는 다음이 포함됩니다.

  • 11 자리 휴대 전화 번호 (예 : 13812345678)

  • 국제 전화에 전화를 걸기위한 형식 (예 : +86 138 1234 5678)

다음은 일반적인 전화 번호와 일치하는 정규 표현입니다.

 $phonePattern = '/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/';

이제 콜백 함수를 작성하여 일치하는 전화 번호를 처리하고 preg_replace_callback_array 로 교체 할 수 있습니다.

 $patterns_and_callbacks = array(
    // 일치 전화 번호
    '/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/' => function ($matches) {
        return '[전화 번호는 숨겨져 있습니다]';
    }
);

$text = "저희에게 연락하십시오:+86 138 1234 5678 또는 전화(010) 1234-5678";
$result = preg_replace_callback_array($patterns_and_callbacks, $text);

echo $result;

위의 코드에서는 정규 표현식을 통해 전화 번호와 일치하고 콜백 함수에서 대체 된 텍스트를 반환합니다. preg_replace_callback_array는 모든 일치하는 모든 전화 번호를 [전화 번호 Hidden] 으로 자동 교체합니다.

3. preg_replace_callback_array를 사용하여 이메일 주소를 식별하고 교체하십시오

다음으로 텍스트에서 이메일 주소를 처리해야합니다. 사서함의 일반적인 형식에는 다음이 포함됩니다.

  • username@example.com

  • user.name@subdomain.example.net

다음과 같은 정규 표현식을 사용하여 이메일 주소와 일치 할 수 있습니다.

 $emailPattern = '/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/';

마찬가지로, 이메일 주소에 대한 콜백 함수를 만들고 preg_replace_callback_array 로 바꿉니다.

 $patterns_and_callbacks = array(
    // 일치 전화 번호
    '/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/' => function ($matches) {
        return '[전화 번호는 숨겨져 있습니다]';
    },
    // 이메일 주소를 일치시킵니다
    '/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/' => function ($matches) {
        return '[이메일이 숨겨져 있습니다]';
    }
);

$text = "내 이메일 주소입니다 example123@m66.net,연락처 정보:+86 138 1234 5678";
$result = preg_replace_callback_array($patterns_and_callbacks, $text);

echo $result;

이 예에서는 콜백 함수를 통해 일치하는 사서함을 교체하여 [Mailbox Hidden] 으로 대체합니다. 이런 식으로, 우리는 텍스트의 전화 번호와 이메일을 성공적으로 식별하고 교체합니다.

4. URL에서 도메인 이름 교체를 처리합니다

전화 번호 및 이메일 외에도 텍스트에서 URL을 처리해야합니다. 텍스트에 URL이 포함되어 있고 도메인 이름을 m66.net 으로 바꾸려는 경우 URL과 일치하는 정규 표현식을 작성하고 콜백 함수에서 교체 할 수 있습니다.

다음은 URL과 일치하는 정규 표현식입니다.

 $urlPattern = '/https?:\/\/([a-zA-Z0-9.-]+)(\/[a-zA-Z0-9\-._~:\/?#[\]@!$&\'()*+,;%=]*)/';

아래와 같이 URL의 도메인 이름 부분을 콜백 함수에서 M66.net 으로 바꿀 수 있습니다.

 $patterns_and_callbacks = array(
    // 일치 전화 번호
    '/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/' => function ($matches) {
        return '[전화 번호는 숨겨져 있습니다]';
    },
    // 이메일 주소를 일치시킵니다
    '/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/' => function ($matches) {
        return '[이메일이 숨겨져 있습니다]';
    },
    // 일치하고 교체하십시오URL도메인 이름
    '/https?:\/\/([a-zA-Z0-9.-]+)(\/[a-zA-Z0-9\-._~:\/?#[\]@!$&\'()*+,;%=]*)/' => function ($matches) {
        return 'https://' . 'm66.net' . $matches[2];
    }
);

$text = "공식 웹 사이트를 방문하십시오:https://www.example.com/contact 또는에 의해https://subdomain.example.org더 많은 정보를 얻으십시오";
$result = preg_replace_callback_array($patterns_and_callbacks, $text);

echo $result;

이러한 방식으로 텍스트의 모든 URL의 도메인 이름은 M66.net 으로 대체되며 나머지는 변경되지 않습니다.

5. 결론

preg_replace_callback_array 함수를 사용하면 PREGP의 PHP의 URL에서 전화 번호, 이메일 주소 및 도메인 이름을 쉽게 식별하고 교체 할 수 있습니다. 콜백 함수를 사용하면 다양한 유형의 교체품을 유연하게 처리하여 교체 로직의 효율성과 정확성을 보장 할 수 있습니다.