Webアプリケーションを構築する場合、ユーザー入力の処理は重要なタスクであり、特に敏感な単語のフィルタリングです。 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
$パターン:置き換える文字列に一致する正規表現(ケースの鈍感)。
$の交換:交換に使用されるコンテンツ。
$文字列:元の文字列。
$オプション:エンコードおよびその他の設定を指定するために使用されるオプションのパラメーター。
この関数は、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とUnicode-Supportedを組み合わせた正規表現ライブラリなど、より近代的な代替品の使用を検討することをお勧めします。いずれにせよ、安全で健康的なコンテンツ環境を構築することは、常にすべての開発者にとって重要な責任です。