以前、いくつかの特殊文字をフィルタリングする php プログラムを紹介しましたが、この機密性の高い単語のフィルタリング機能をより強力にアップグレードして、機密性の高い単語の途中にスペースやその他の句読点を追加することを恐れなくなります。
ユーザーが話すことができる限り、広告やその他のセンシティブな言葉が表示される可能性があるため、サイトの「純粋性」を維持するためにセンシティブな言葉のフィルタリングメカニズムを追加する必要があります。入 フィルタリング機構: PHPキーワードの正規一致を追加
// $ STRはユーザーデータ
関数 wordfilter ($ STR) {/*
センシティブワード 保存方法:
1: TXTに格納ファイル (一般的な方法)
2: キャッシュに保存する (より良い方法)
*/
$words = getSensitiveWords();
foreach ($words as $word)
{
$preg_letter = '/^[A-Za-z]+$/';
if (preg_match($preg_letter, $str))
+)|([^A-Za-z]+' . $word . 's+)|(s+' . $word . '[^A-Za-z]+)|(^' . $word . '[^A-Za-z]+)|([^A-Za-z]+' . $word.'$)/';
))
|(^' . $word . '$ )/'; 、ユーザーのカウンター フィルタリング方法は、間にスペースやその他の句読点記号を追加するなど多様です。
例:
機密ワード: バックル
ユーザー処理後:
バックル バックル
バックル、バックル
バックル @ バックル
バックル 1 バックル
このとき、コードの通常の一致が一致しない可能性があります。
解決策:
まず、ユーザーデータからすべての句読点といくつかの特殊文字を削除し、次に機密単語の判定を実行します。
コード:
$flag_arr=array('?','!','¥','(',')',':',''',''','"','"' ,'《','》',',','...','. ',',','nbsp',']','[','~'); ',preg_replace("/[[:punct:]]/",'',strip_tags(html_entity_decode(str_replace($flag_arr,'',$content),ENT_QUOTES,'UTF-8')) ));
$content_filterは処理されたユーザーデータであり、wordFilter($content_filter) フィルタリング操作を実行します