我必须在网站上使用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;
}
}
谢谢
答案 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);
}
}