これを行うには多くの方法があります。あなたの状況では、SQL を使用することさえありません。すべての悪い単語の正規表現を使用して CI に構成オプションを記述し、入力をそれらの悪い単語と照合します。例えば
$config['bad_words'] = "/[\s](ass|sex|butt|badword)[\s]/i";
$input = preg_replace($config['bad_words'],"",$input);
これは、何千ものレコードがある場合に機能しますが、何千もの不適切な単語があると少し遅くなる可能性があります。もちろん、使用したい悪い言葉がいくつかある場合、正規表現は悪い考えです。何千もの悪い言葉がある場合は、mysql で「like」を使用します。少し遅くなりますが、パフォーマンスへの影響はそれほど大きくありません。
SQL では、悪い言葉 (または悪い言葉の正規表現) のデータベースを作成します。bad_words テーブルの各行には、「fu.k」などの悪い単語に一致する正規表現が含まれます。入力を検証して不適切な単語を除外する場合は、次のことを行う必要があります。
<?php
$res = mysql_query( "select * from bad_words" );
...
//get all rows in array $badWords
...
$myRegexMatch = implode ( "|" , $badWords );
preg_replace($myRegexMatch,"",$input);
?>
これはおそらく最速のソリューションの 1 つであり、実装が簡単で、非常に迅速です。高速化したい場合は、データベース キャッシングを使用して、データベースから取得した正規表現をキャッシュすることもできます。
さらに高速に実行することに興味がある場合 (実際には必要ありません)、「広告」が挿入されることになっている場合は常に、データベース内でこの正規表現の一致を行うデータベース トリガー/制約を記述します。