私のスクリプトには、適切な悪い単語フィルターが本当に必要です。私はすでに悪い言葉の配列を持っています。しかし、私の問題は、「テスト」は悪い言葉であり、「テスト」と言った場合でも、それを悪口としてカウントするなど、悪い言葉を検出したことでした。2 回目の試行で、単語の検出を別の言葉で修正しましたが、@test と 'cusswordhere' と言ってバイパスすることができました。
これを修正するためにできることはありますか?
私のコード:
function censor($message) {
$badwords = $this->censor; //array containing bad words
$message = @preg_replace('[^A-Za-z0-9 ]','',strtolower(' '.$message.' '));
foreach($badwords as $bad) {
$bad = trim($bad);
if(strpos($message.' ', $bad.' ')!==false) {
if(strlen($bad)>=2) {
return true;
}
}
}
}
現在、他の単語は検出されませんが、@cusshere「cusshere」などのように言うことでバイパスできます。これを修正するためにできることはありますか?