PHP中的Badword过滤器?

mor*_*ous 3 php filtering

我正在用PHP编写一个badword过滤器.

我有一个数组中的坏词列表,方法cleanse_text()是这样写的:

public static function cleanse_text($originalstring){
   if (!self::$is_sorted) self::doSort();
   return str_ireplace(self::$badwords, '****', $originalstring);
}
Run Code Online (Sandbox Code Playgroud)

这对于完全匹配来说是微不足道的,但是我还要审查那些伪装成'ab*d'的词,其中'abcd'是一个坏词.事实证明这有点困难.

这是我的问题:

  1. 是一个值得打扰的坏词过滤器(它是专业人士的网站,所以需要一定的最低限度 - 我会想到)

  2. 是否值得尝试捕捉像'f*ck'这样的明显工作的喧嚣 - 或者我不应该尝试过滤掉那些.

  3. 是否有更好的方法来编写上面的cleanse_text()方法?

nic*_*ckf 13

我绝对不会打扰它.

  1. 这是一个专业人士的网站,所以你可以假设他们会采取适当的行动.一些节制和执行规则将使任何人排队.以Stack Overflow为例.即使没有社区审核工具,人们也可能会受到适当的压力.

  2. 它会失败.会有太多误报("clbuttic"),并且制作包含所有可能的咒骂词的列表将无法维持.替换某些字母(例如:) f*ck会使其具有攻击性.删除这个词完全破坏了意义,这是误报的一个巨大问题.

  3. 考虑一下关于驴和鸟的讨论.这完全是关于驴,乳房,鲣鸟和公鸡.

  • "考虑一下关于驴和鸟的讨论......",我不得不咬我的嘴唇,以防止我自己在这个时候笑出来.我看到了你正在制作的观点..;) (3认同)