Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP – mb_ereg_replace_callback() 함수 완벽 가이드

PHP에서 mb_ereg_replace_callback() 함수는 콜백(callback)을 활용하여 멀티바이트(multibyte)를 지원하는 정규 표현식 검색 및 치환을 수행하는 데 사용됩니다. 이 함수는 문자열을 스캔하여 주어진 패턴과 일치하는 부분을 찾은 뒤, 일치한 텍스트를 콜백 함수가 반환한 결과로 대체합니다. 기능적으로는 mb_ereg_replace() 함수와 유사하지만, 치환 로직을 콜백으로 처리할 수 있다는 점이 큰 차이입니다. 이 함수는 PHP 5.4 이상 버전부터 지원됩니다.

문법(Syntax)

string mb_ereg_replace_callback(str $pattern, callback $callback, str $string, str $options)

매개변수(Parameters)

이 함수는 다음과 같은 네 가지 매개변수를 받습니다.

  • $pattern − 정규 표현식 패턴입니다. 패턴 안에 멀티바이트 문자를 포함할 수 있습니다.

  • $callback − 검색 대상 문자열에서 일치한 요소들을 배열 형태로 전달받아 호출되며, 치환에 사용할 문자열을 반드시 반환해야 합니다.

  • $string − 패턴과 일치 여부를 검사할 대상 문자열입니다.

  • $options − 검색 동작을 제어하는 옵션입니다.

참고 − 콜백 함수는 대개 mb_ereg_replace_callback() 호출 시 단 한 곳에서만 필요합니다. 이런 경우 익명 함수(anonymous function)를 사용하여 호출부 안에서 직접 콜백을 선언하면 좋습니다. 이렇게 하면 호출에 필요한 모든 코드를 한곳에 모아 가독성을 높일 수 있고, 다른 곳에서는 사용되지 않는 콜백 함수 이름이 전역 네임스페이스를 오염시키는 것도 방지할 수 있습니다.

반환 값(Return Values)

mb_ereg_replace_callback()은 성공 시 치환이 완료된 결과 문자열을 반환하고, 오류가 발생하면 False를 반환합니다. 또한 입력된 문자열이 현재 설정된 인코딩에 유효하지 않을 경우 NULL을 반환합니다.

예제 1 – 일반 콜백 함수 사용

<?php
   $result = "April Fools day is 04/01/2019\n";
   $result.= "Next match is 12/24/2021\n";

   // 콜백 함수
   function next_year($matches)
   {
      return $matches[1].($matches[2]+1);
   }
   echo mb_ereg_replace_callback(
      "(\d{2}/\d{2}/)(\d{4})",
      "next_year",
      $result);
?>

실행 결과

April Fools day is 04/01/2020
Next match is 12/24/2022

예제 2 – 익명 함수 사용

별도의 콜백 함수를 정의하지 않고 익명 함수를 활용한 예제입니다.

<?php
    // 익명 함수 사용
    $result = "April Fools day is 04/01/2019\n";
    $result.= "Next match is 12/24/2021\n";

    echo mb_ereg_replace_callback(
        "(\d{2}/\d{2}/)(\d{4})",
        function ($matches) {
            return $matches[1].($matches[2]+1);
        },
        $result);
?>

실행 결과

April Fools day is 04/01/2020
Next match is 12/24/2022

참고 − 예제 2에서는 익명 함수를 사용하여 별도의 콜백 함수 정의를 없앴지만, 실행 결과는 예제 1과 완전히 동일합니다. 이처럼 간단한 치환 로직이라면 익명 함수를 사용하는 것이 코드를 더 깔끔하게 유지하는 방법입니다.