中国語またはその他のマルチバイト文字を扱う場合、通常の文字列交換機能は、特に敏感な単語フィルタリングシナリオで、二重バイト文字を正しく識別および処理できないことがよくあります。 PHPのMB_EREGI_REPLACE関数は、ケースを無視し、マルチバイト文字を正しく処理するマルチバイトセーフの通常の交換機能であり、テキストに二重バイト文字を含む敏感な単語を置き換えるのに理想的です。
MB_EREGI_REPLACEを使用してテキストの敏感な単語を置き換える方法を示す例を以下に示します。
<?php
// 内部文字エンコードを設定します UTF-8,マルチバイト文字列関数が適切に機能することを確認してください
mb_internal_encoding("UTF-8");
// 元のテキスト,敏感な中国語の言葉が含まれています
$text = "これはテストテキストです,敏感な単語が含まれています:敏感な言葉と悪いコンテンツ。";
// 敏感な単語のリスト(正規表現パターンをサポートします)
$sensitiveWords = [
"敏感な言葉",
"悪いコンテンツ"
];
// 替换敏感な言葉为***
foreach ($sensitiveWords as $word) {
// 使用mb_eregi_replaceケースに依存しない交換を行います
$text = mb_eregi_replace($word, "***", $text);
}
echo $text;
?>
実行結果:
これはテストテキストです,敏感な単語が含まれています:***そして***。
マルチバイトセキュリティ
MB_EREGI_REPLACEは、 MB_EREG_REPLACEのケース非感受性バージョンであり、マルチバイトエンコードされた文字列を扱うことを専門としており、通常の正規表現が中国語、日本、その他のキャラクターを認識できないという問題を回避します。
文字エンコード設定<br> 最初にMB_INTERNAL_ENCODING( "UTF-8")を呼び出すか、スクリプトがデフォルトでUTF-8にエンコードされていることを確認して、マルチバイト文字列関数の通常の使用を確保する必要があります。
敏感な単語マッチング<br> 正規表現をサポートし、ファジーマッチングやステムのマッチングなどの機密性のあるルールを柔軟に定義できます。
敏感な単語がたくさんある場合は、データベースまたはファイルから敏感な単語のリストを読み、ループに置き換えることができます。また、ユーザー入力と組み合わせてフィルタリングして、コンテンツのセキュリティを確保するために、敏感な単語をリアルタイムで置き換えることもできます。