【发布时间】:2014-05-02 18:06:54
【问题描述】:
问题 1
我正在使用以下内容来检查某些输入元素中的坏词,并且我想告诉用户他们的文本中不允许使用哪个词。我如何从与之匹配的数组中获取特定的单词或单词?以及当用户输入多个坏词时,它如何仅检测第一个词而忽略其余词。
问题 2。
我如何忽略小写和大写,此代码无法将 "John" 和 "john" 识别为同一事物。我不知道这是否是一个正则表达式工作。如果这很弱,请推荐另一种方式。 PHP
$BadWords = array("James", "June", "Jane");
if (in_array($comment, $BadWords)){
echo 'No way... that is not allowed lol...';
}
问题 3(速度)
假设我有大约 2000 个单词要与一个单词进行比较,哪种方法最好在不滥用资源的情况下更快地完成此过程,同时考虑到过滤坏词只是一个示例,因为这不仅限于检查坏词和在所有情况下都不考虑数据库。
谢谢。
【问题讨论】:
-
绝对不是 regex 工作。假设你的数组上的脏词是 rascal,如果用户键入 damn rascal 那么你的代码就会失败。
-
实际想想,你刚才提到的大概有 2000 个字,现在举个例子。 2000字里有10个不好的字,你会不会只显示1个不允许的字,让他改正提交,然后再显示下一个?
-
你建议我做什么?
-
@user3109875 根据用户体验,最好将它们一起提交,并说“cmets 中不允许以下词:”,然后是列表。那么他们知道所有不允许的内容并一次性纠正吗?
-
这就是我想做的,但我不知道如何编码。
标签: php regex arrays filter compare