私は開発しているアプリケーションを持っています。ユーザーは自分で名前を選択できます。私は「悪い」の名前をフィルタリングできるようにする必要がありますので、私は今のところ、この操作を行います。ユーザー名の「悪い名前」を検索する最も効率的な方法
$error_count=0;
$bad_names="badname1badname2";
preg_match_all("/\b".$user_name."\b/i",$global['bad_names'],
$matches,PREG_OFFSET_CAPTURE);
if(count($matches[0])>0)
{
$error_count++;
}
ユーザーの名前が悪い名前のリストの中にあった場合、これは私に言うだろう、しかし、それは私に教えてくれありません悪意のある名前自体がユーザーの名前である場合彼らは悪い言葉を他のものと組み合わせることができ、私はそれを検出しません。
私はこれにどのような種類の正規表現を使用しますか?悪い名前(好ましくは$ bad_namesのような配列)を取り、ユーザの名前を検索して、その単語が名前の範囲内にあるかどうかを調べる必要があります。私は正規表現ではあまり良くありません。私が考えることができる唯一の方法は、すべてをループ全体に渡すことです。これは非常に非効率的です。誰でも良い考えがありますか?配列で文字列を検索する方法を理解する必要があると思います。
のために素晴らしい作品:私は便利な漫画/記事を読んでいるP – Phillip
どこかをどのように単純な "悪い言葉"のフィルタリングが物事を混乱させ、無害な言葉を捕まえることができるかについて。もちろん、今私はそれを見つけることはできません。 –
@SurrealDreams [Clbuttic Mistake](http://www.telegraph.co.uk/news/newstopics/howaboutthat/2667634/The-Clbuttic-Mistake-When-obscenity-filters-go-wrong.html) –