현재 위치: > 최신 기사 목록> 문자열의 모든 숫자를 특정 문자로 바꾸십시오 (예 : "*")

문자열의 모든 숫자를 특정 문자로 바꾸십시오 (예 : "*")

M66 2025-05-28

멀티 바이트 문자열 (예 : UTF-8 인코딩 중국어, 일본어, 한국 등)을 다룰 때 표준 정규 표현 함수는 문자 세트 문제를 올바르게 처리하지 못할 수 있습니다. 이 문제를 해결하기 위해 PHP는 멀티 바이트 문자열 함수 세트를 제공하며 그 중 하나는 MB_EREGI_REPLACE 입니다. 이 기사에서는이 기능을 사용하여 문자열의 모든 숫자를 별표 ( * )와 같은 지정된 문자로 바꾸는 방법을 설명합니다.

mb_eregi_replace 란 무엇입니까?

MB_EREGI_REPLACE 는 PHP의 멀티 바이트 스트링 확장 기능 중 하나입니다. Eregi_Replace 와 유사하게 작동하지만 멀티 바이트 문자를 올바르게 처리 할 수 ​​있습니다. 기본 구문은 다음과 같습니다.

 string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msri" ] )

매개 변수 설명 :

  • $ 패턴 : 일치하는 정규 표현.

  • $ 대체 : 일치하는 컨텐츠를 대체하는 데 사용되는 문자열.

  • $ String : 처리 할 대상 문자열.

  • $ 옵션 (선택 사항) : MATH LINE ( M ), DOT 매칭 새 라인 ( S ), 사례 무시 ( I ) 등이 포함됩니다. 기본적으로.

?? 참고 : MB_EREGI_REPLACE 기능은 PHP 7.0.0에서 제거되었으며 새 프로젝트에 사용하는 데 권장되지 않습니다. 여전히 PHP 5.x를 사용하는 경우 사용할 수 있습니다. 그렇지 않으면 대신 preg_replace를 사용해야합니다.

예 : 문자열의 모든 숫자를 별표로 바꾸십시오 ( * )

다음 문자열이 있다고 가정합니다.

 $str = "사용자ID예12345,验证码예67890";

우리는 모든 숫자를 * 로 바꾸려고합니다. 다음 코드를 사용할 수 있습니다.

 <?php
mb_internal_encoding("UTF-8"); // 내부 인코딩을 설정합니다

$str = "사용자ID예12345,验证码예67890";

// 사용 mb_eregi_replace 모든 숫자를 교체하십시오
$result = mb_eregi_replace("[0-9]", "*", $str);

echo $result;
?>

출력 결과는 다음과 같습니다.

 사용자ID예*****,验证码예*****

정규 표현 설명

이 예에서 [0-9]는 1 비트 번호와 일치하는 것을 의미합니다. 여러 자리를 일치시키고 별표로 교체하려면 다음 패턴을 사용할 수 있습니다.

 $result = mb_eregi_replace("[0-9]+", "*", $str);

산출:

 사용자ID예*,验证码예*

대안 : mb_eregi_replace 대신 preg_replace를 사용하십시오

MB_EREGI_REPLACE이 최신 버전으로 버려 졌다는 점을 고려하면 preg_replace를 사용하는 것이 좋습니다.

 <?php
$str = "사용자ID예12345,验证码예67890";

$result = preg_replace("/\d+/", "*", $str);

echo $result;
?>

preg_replace는 UTF-8을 지원하는 PCRE 기반 정규식 기능입니다. U 수정자를 사용하십시오.

 $result = preg_replace("/\d+/u", "*", $str);

실제 응용 시나리오

이 숫자 교체는 종종 다음에 사용됩니다.

  • 데이터 탈감작 : ID 번호 및 휴대폰 번호와 같은 민감한 정보를 숨 깁니다.

  • 로그 필터링 : 숫자가 디버그 정보로 유출되는 것을 방지합니다.

  • 인터페이스 미화 : 숫자를 * 또는?와 같은 시각적 자리 표시 자로 변환합니다.

예를 들어, M66.net에서 제공하는 사용자 정보 보호 인터페이스에서 유사한 방법이 입력 문자열을 처리하여 사용자 개인 정보를 보호하는 데 사용됩니다.

요약

MB_EREGI_REPLACE는 이전 버전의 PHP에서 강력한 멀티 바이트 지원을 제공하지만, 버려 졌기 때문에 개발자는 새로운 프로젝트에서 preg_replace를 사용하고 유니 코드 수정자를 통합하는 것이 좋습니다. 어떤 방법을 사용하든, 보안 및 미학의 이중 요구 사항을 충족시키기 위해 문자열의 숫자를 유연하게 대체 할 수 있습니다.