匹配字符串中的单词列表与字符之间的空格

时间:2016-10-28 15:04:31

标签: php regex words

假设我有一个如下所示的字符串:

  

现在就给我你的xw al l et!

一系列被禁词:

  钱包,香蕉,土豆

我如何编写正则表达式以捕获任何这些单词?即使在字符之间有空格。

干杯。

2 个答案:

答案 0 :(得分:1)

此代码将完成工作:

foreach($banned as $word) {
    $chars = str_split($word);
    $pattern = implode(' ?', $chars);
    $check = preg_match('/'.$pattern.'/i', $text);
}

$ banned是一系列禁词

$ text是您要验证禁用词的文本

并且如果找到禁止的单词,则检查$,并根据您想要实现的逻辑,以适当的方式使用此变量。

答案 1 :(得分:-1)

捕捉任何单词的简单方法(没有空格):     

function censorship($bannedwords, $sentence) {
    foreach($bannedwords as $word) $sentence = str_replace($word, '****', $sentence);
    return $sentence;
}

$bannedwords = ['banana', 'potato'];
echo censorship($bannedwords, 'Every banana is a potato');
// Output : Every **** is a ****