웹 응용 프로그램을 구축 할 때는 사용자 입력 처리가 중요한 작업, 특히 민감한 단어를 필터링하는 작업입니다. PHP는 MB_EREGI_REPLACE이 다국어 환경에서 문자열을 대체 할 수있는 강력한 도구 인 일부 다중 바이트 문자열 함수를 제공합니다. 이 기사에서는 MB_EREGI_REPLACE를 사용하여 민감한 단어를 텍스트로 바꾸는 방법을 설명합니다.
MB_EREGI_REPLACE 는 PHP Multi-Byte String Extension MBString 에서 제공하는 기능이며 기본 구문은 다음과 같습니다.
mb_eregi_replace(string $pattern, string $replacement, string $string, string $option = ""): string|false
$ 패턴 : 교체 할 문자열과 일치하는 정규 표현식 (Case Insensentitive).
$ 교체 : 교체에 사용되는 콘텐츠.
$ 문자열 : 원래 문자열.
$ 옵션 : 옵션 매개 변수, 인코딩 및 기타 설정을 지정하는 데 사용됩니다.
이 기능은 UTF-8과 같은 다중 바이트 문자 세트를 처리하는 데 적합하며 중국 민감한 단어 필터링을 처리하는 데 이상적입니다.
다음은 문자열의 민감한 단어를 mb_eregi_replace 로 바꾸는 방법을 보여주는 간단한 예입니다.
<?php
// 민감한 단어 목록
$sensitive_words = ['도박', '춘화', '폭행'];
// 처리 할 텍스트
$input_text = "이 웹 사이트에는 포함되어 있습니다도박그리고춘화콘텐츠,입장 https://m66.net/play 더 많은 정보가있을 것입니다。";
// 문자를 교체하십시오
$replacement = '***';
// 모든 민감한 단어를 루프로 바꾸십시오
foreach ($sensitive_words as $word) {
$input_text = mb_eregi_replace($word, $replacement, $input_text);
}
echo $input_text;
?>
출력 결과 :
이 웹 사이트에는 포함되어 있습니다***그리고***콘텐츠,입장 https://m66.net/play 더 많은 정보가있을 것입니다。
위에서 볼 수 있듯이 MB_EREGI_REPLACE는 멀티 바이트에 민감한 단어를 정확하게 대체하고 URL 및 기타 콘텐츠를 변경하지 않습니다.
실제 적용에서 민감한 단어는 공백을 추가하거나 특수 기호를 추가하는 것과 같은 변형이있을 수 있습니다. 예를 들어보다 복잡한 정규 표현식을 사용하여 인식을 향상시킬 수 있습니다.
<?php
$sensitive_words = ['내기\s*블로그', '색상\s*애정', '잔인한\s*힘'];
$input_text = "이것은 문제입니다내기 블로그콘텐츠,또한 포함잔인한 힘그리고se애정,请勿입장 http://m66.net/bad.html。";
foreach ($sensitive_words as $word) {
$pattern = $word;
$input_text = mb_eregi_replace($pattern, '***', $input_text);
}
echo $input_text;
?>
산출:
이것은 문제입니다***콘텐츠,또한 포함***그리고***,请勿입장 http://m66.net/bad.html。
변형 된 민감한 단어를 올바르게 대체 할 수 있도록 모든 공간과 일치하도록 \ s*를 사용하십시오.
MB_EREGI_REPLACE는 PHP 8.0 후에 제거되었습니다. 유사한 기능을 달성하기 위해 MB_CONVERT_ENCODING 과 함께 preg_replace를 사용하는 것이 좋습니다.
사용하기 전에 MBString 확장이 활성화되어 있는지 확인하십시오.
일치하는 패턴의 특수 문자를 피해야합니다. 그렇지 않으면 정기적 인 일치 오류가 발생할 수 있습니다.
mb_eregi_replace를 사용하면 다국어 환경에서 민감한 단어를 쉽게 대체 할 수 있습니다. 그러나 호환성 문제를 알고 있어야합니다. 새로운 프로젝트는 preg_replace 와 유니 코드 지원을 결합한 정규식 라이브러리와 같은보다 현대적인 대안을 사용하는 것이 좋습니다. 어느 쪽이든, 안전하고 건강한 콘텐츠 환경을 구축하는 것은 항상 모든 개발자의 중요한 책임입니다.