正则表达式匹配任何相似的单词

时间:2018-01-02 06:11:40

标签: php regex

我尝试匹配用户可以使用的所有字词,例如表单,例如网页应用中的黑名单php

例如,这些单词位于黑名单

  

问,stackoverflow,你好

现在我想将它们与任何类似的词匹配,例如:

  

a_ks,as_k,as-k,as.k或a.s.k

我找到了这些正则表达式,但我认为这对我的问题不正确:

1:

\W*((?i)ask(?-i))\W*

2:

^((?!ask)[\s\S])*$

1 个答案:

答案 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;
    }

}
?>

Example