ホームページ  >  記事  >  バックエンド開発  >  PHPの機密ワードフィルタリングの上級バージョン

PHPの機密ワードフィルタリングの上級バージョン

巴扎黑
巴扎黑オリジナル
2016-11-10 13:34:432026ブラウズ

以前、いくつかの特殊文字をフィルタリングする php プログラムを紹介しましたが、この機密性の高い単語のフィルタリング機能をより強力にアップグレードして、機密性の高い単語の途中にスペースやその他の句読点を追加することを恐れなくなります。


ユーザーが話すことができる限り、広告やその他のセンシティブな言葉が表示される可能性があるため、サイトの「純粋性」を維持するためにセンシティブな言葉のフィルタリングメカニズムを追加する必要があります。入 フィルタリング機構: PHPキーワードの正規一致を追加

// $ STRはユーザーデータ

関数 wordfilter ($ STR) {

/*







センシティブワード 保存方法:
1: TXTに格納ファイル (一般的な方法)
2: キャッシュに保存する (より良い方法)

memcachd に保存します。

*/
$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) フィルタリング操作を実行します

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。