현재 위치: > 최신 기사 목록> preg_replace_callback_array를 사용하여 여러 모드를 동시에 처리하십시오

preg_replace_callback_array를 사용하여 여러 모드를 동시에 처리하십시오

M66 2025-05-17

문자열 교체를 처리 할 때 PHP의 preg_replace_callback () 함수는 콜백 함수를 통해 일치하는 결과를 유연하게 처리 할 수 ​​있습니다. 그러나 여러 가지 정규 표현식이있는 경우 각각 다른 논리로 처리해야합니다. preg_replace_callback_array () 가 이상적인 선택입니다.

php 7 이후, preg_replace_callback_array ()는 여러 정규 패턴과 해당 콜백 기능을 연관 배열 형태로 정의하는 우아한 방법을 제공합니다.

이 기사에서는 사용법을 통해 여러분에게 예제와 동시에 다중 일치하는 논리를 처리하는 방법을 보여줍니다.

기본 구문

 preg_replace_callback_array(array $patterns_and_callbacks, string $subject, int $limit = -1, int &$count = null): string|array|null
  • $ patterns_and_callbacks 는 연관 배열이며 키는 정규식이며 값은 해당 콜백 함수입니다.

  • $ 주제 는 처리 할 문자열입니다.

예 : 링크 및 이메일 주소를 동시에 교체

텍스트에서 링크 및 이메일 주소를 식별하고 링크를 <a> 태그로 포장하고 Mailto를 추가하십시오 : 이메일 주소에 추가하십시오.

 $text = <<<EOT
당사 웹 사이트에 오신 것을 환영합니다 http://m66.net/page,이메일을 보낼 수도 있습니다 support@m66.net 찾다。
EOT;

$result = preg_replace_callback_array([
    // 거래하십시오 URL
    '/\bhttps?:\/\/[^\s]+/i' => function ($matches) {
        $url = htmlspecialchars($matches[0]);
        return "<a href=\"{$url}\">{$url}</a>";
    },
    // 거래하십시오邮箱地址
    '/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/i' => function ($matches) {
        $email = htmlspecialchars($matches[0]);
        return "<a href=\"mailto:{$email}\">{$email}</a>";
    }
], $text);

echo $result;

출력 결과 :

 당사 웹 사이트에 오신 것을 환영합니다 <a href="http://m66.net/page">http://m66.net/page</a>,이메일을 보낼 수도 있습니다 <a href="mailto:support@m66.net">support@m66.net</a> 찾다。

시나리오를 사용하십시오

preg_replace_callback_array () 는 특히 처리에 적합합니다.

  • Markdown, BBCode, Custom Syntax 등과 같은 다양한 텍스트 분석;

  • 여러 형식의 식별 및 교체;

  • 복잡한 텍스트로 다른 구조를 처리 할 때 가독성 및 유지 보수를 향상시킵니다.

  1. 정규 표현 순서가 중요하며 이전 규칙이 먼저 실행됩니다.

  2. XSS 공격 (특히 사용자 입력을 처리 할 때)을 피하려면 htmlspecialchars ()를 사용하십시오.

  3. PHP의 PCRE 라이브러리는 더 높은 버전에서 더 강력하며 PHP 7.1+를 사용하는 것이 좋습니다.

요약

preg_replace_callback_array ()를 사용하면 더 명확한 코드 구조와보다 논리적 인 분리를 통해 여러 정규 패턴과 해당 처리 방법을 쉽게 정의 할 수 있습니다. 텍스트 처리에서 강력하고 과소 평가 된 도구입니다.

마스터 링은 코드를보다 우아하게 만들뿐만 아니라 개발 효율성을 크게 향상시킬 수 있습니다.