检查字符串是否包含badwortlist.txt中的单词

时间:2018-02-12 12:11:44

标签: php

我必须在网站上使用badwordlist。 bandwordlist.txt以这种格式包含大约20,000个坏词:

badword1 
badword2 
badword3

每个badword在txt文件中都有自己的行。

检查长字符串是否包含min的​​最快方法是什么。这20k字之一。

我没试这么成功。当然我之前搜索过堆栈但无法找到解决方案:

$badwords = file('badwords.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);                

$words = explode(' ', $string);
foreach($words as $word) {
//Filter extraneous characters out of the word
$word = preg_replace('/[^A-Za-z0-9]*/', '', $word);
//Check for bad word match
if (isset($badwords[$word])) {
    echo 'found';
exit;
}
}

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用in_array()

$badwords = file('badwords.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);                

$words = explode(' ', $string);
foreach($words as &$word) {
 //Check for bad word match
 if (in_array($word,$badwords)) {
    echo 'found';
    //if you want to remove word then do unset($word);
  }
}