我有一个.txt文件,在论坛中包含很多禁用词,表达方式如下:
// filterwords.txt
XXX
YYY
ZZZ
然后,我想使用preg_match来检查带有这些单词的传入文本$ str;如果不包括那些禁止的话,我们可以做点什么;否则,我们做另一件事......我不确定表达方式,我只知道: -
$filter_word = file("filterwords.txt")
for ($i=0; $i< count($filter_word);$i++)
{
if(!preg_match($filter_word[$i],$str))
{
echo "not ok!";
exit;
}
else
{
echo "ok!!";
exit;
}
}
专家可以教我如何编写preg_match部分吗?三江源。
答案 0 :(得分:1)
这个怎么样:
<?php
$file = file_get_contents('filterwords.txt');
$words = preg_split("#\r?\n#", $file, -1, PREG_SPLIT_NO_EMPTY);
#Added to escape metacharacters as mentioned by @ridgerunner
$words = array_filter("preg_quote", $words);
$pattern = "#\b(". implode('|', $words) . ")\b#";
if(preg_match($pattern, $str))
{
echo "bad word detected";
}
?>
P.S。假设你有文本来检查$ str var