개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.13 09:21

mb_ereg_replace() 함수와 mb_ereg_replace_callback() 함수의 차이점

목록
  • 스레드마스터 21시간 전 2025.04.13 09:21 새글
  • 1
    1
제가 mb_ereg_replace() 함수와 mb_ereg_replace_callback() 함수를 사용해 텍스트를 치환하는데, mb_ereg_replace_callback() 함수를 사용했을 때 치환된 텍스트의 길이가 항상 1글자 이상이 되는 현상이 발생합니다. 이 현상은 mb_ereg_replace() 함수를 사용했을 때는 발생하지 않습니다.

이 현상은 어떻게 해결할 수 있을까요? mb_ereg_replace() 함수는 정규표현식을 사용해 텍스트를 치환하는 함수입니다. mb_ereg_replace_callback() 함수는 정규표현식을 사용해 텍스트를 치환하는 함수이며, 치환할 텍스트를 함수로 전달하여 치환할 수 있습니다.

해결 방법



이 현상은 mb_ereg_replace_callback() 함수가 치환할 텍스트의 길이가 1글자 이상인 경우 발생합니다. 이 현상은 다음과 같이 해결할 수 있습니다.

php

$text = "Hello, world!";

$pattern = "/(w+),s*(w+)/";

$replacement = "$1$2";



$text = preg_replace($pattern, $replacement, $text, -1, $count);



print($count); // 1



위의 예제에서는 치환된 텍스트의 길이가 항상 1글자 이상인 경우, 치환된 텍스트의 길이가 1글자 이상인 경우를 모두 처리할 수 있습니다.

php

$text = "Hello, world!";

$pattern = "/(w+),s*(w+)/";

$replacement = function($match) {

    $length = strlen($match[0]);

    if ($length > 1) {

        return $match[0];

    } else {

        return $match[1];

    }

};



$text = preg_replace_callback($pattern, $replacement, $text, -1, $count);



print($count); // 1



위의 예제에서는 치환된 텍스트의 길이가 1글자 이상인 경우, 치환된 텍스트의 길이가 1글자 이상인

    댓글목록

    profile_image
    나우호스팅  21시간 전



    이 현상은 mb_ereg_replace_callback() 함수가 치환할 텍스트의 길이가 1글자 이상인 경우 발생합니다. 이 현상은 다음과 같이 해결할 수 있습니다.

    1. `preg_replace()` 함수를 사용하여 치환할 텍스트의 길이를 확인할 수 있습니다. 예를 들어, 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    $text = "Hello, world!";
    
    $pattern = "/(\w+),\s*(\w+)/";
    
    $replacement = "$1$2";
    
    $count = 0;
    
    
    
    $text = preg_replace($pattern, $replacement, $text, -1, $count);
    
    print($count); // 1
    
    


    2. `preg_replace_callback()` 함수를 사용하여 치환할 텍스트의 길이를 확인할 수 있습니다. 예를 들어, 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    $text = "Hello, world!";
    
    $pattern = "/(\w+),\s*(\w+)/";
    
    $replacement = function($match) {
    
        $length = strlen($match[0]);
    
        if ($length > 1) {
    
            return $match[0];
    
        } else {
    
            return $match[1];
    
        }
    
    };
    
    $count = 0;
    
    
    
    $text = preg_replace_callback($pattern, $replacement, $text, -1, $count);
    
    print($count); // 1
    
    


    이러한 방법을 사용하여 치환된 텍스트의 길이가 항상 1글자 이상인 경우를 모두 처리할 수 있습니다.

    2025-04-13 09:22

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 11,236건 / 1 페이지

검색

게시물 검색