这是我用来过滤我网站上的坏词的方法。根据自己的喜好使用它。它应该为您指明正确的方向,因为它只会过滤“我是一个坏词”而不是“iamabadword”。
function filterBadWords($str) {
$badWordsFile = "badwords.txt";
$badFlag = 0;
if(!is_file($badWordsFile)) {
echo "ERROR: file missing: ".$badWordsFile;
exit;
}
else {
$badWordsFH = fopen($badWordsFile,"r");
$badWordsArray = explode("\n", fread($badWordsFH, filesize($badWordsFile)));
fclose($badWordsFH);
}
foreach ($badWordsArray as $badWord) {
if(!$badWord) continue;
else {
$regexp = "/\b".$badWord."\b/i";
$badword_add_last_letter = $badWord.substr($badWord, -1);
$regexp_add_last_letter = "/\b".$badword_add_last_letter."\b/i";
if(preg_match($regexp,$str)) $badFlag = 1;
if(preg_match($regexp_add_last_letter,$str)) $badFlag = 1;
}
}
if(preg_match("/\[url/",$str)) $badFlag = 1;
return $badFlag;
}
而文件 badwords.txt 只是一个看起来像这样的文件:
badword1
badword2
badword3
编辑:
如果你只是想要 HOST 这个词,那么使用这个函数:
function filterString($str) {
if(preg_match("/\bhost\b/i",$str)) return true;
return false;
}