我尝试匹配用户可以使用的所有字词,例如表单,例如网页应用中的黑名单php
例如,这些单词位于黑名单
中问,stackoverflow,你好
现在我想将它们与任何类似的词匹配,例如:
a_ks,as_k,as-k,as.k或a.s.k
我找到了这些正则表达式,但我认为这对我的问题不正确:
1:
\W*((?i)ask(?-i))\W*
2:
^((?!ask)[\s\S])*$
答案 0 :(得分:2)
您可以从单词中删除特殊字符,然后将这些单词与黑名单单词匹配。请尝试以下代码:
<?php
$black_list_words = array("ask", "stackoverflow", "hello");
$words = array("stack_overflow","as_k","as.k","not","good","a.s.k");
foreach($words as $word)
{
$match_word = preg_replace('/[^A-Za-z0-9]/', '', $word);
foreach($black_list_words as $check_word)
{
if(strcasecmp($check_word,$match_word) === 0 )
{
echo "found :".$check_word." IN ".$word;
}
echo PHP_EOL;
}
}
?>