这是我用来过滤我的网站上的坏词。用它来满足你的喜好。它应该指向正确的方向,因为它只会过滤“我是坏字”而不是“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;
}
你为什么不创建的屏蔽词的功能,并使用'strpos' ? – 2013-05-09 02:47:07