2013-05-09 41 views
0

做了一些研究后,我似乎无法找到解决我的问题的方法。我有一个不好的单词列表,我希望能够看到用户是否用这些单词留下评论。我尝试过不同的正则表达式,但没有成功。 BTW我没有正则表达式大师。用php匹配word

可以说,我的名单上有单词$word = 'bi'。和注释,上面写着:$comment = he is bi,使用preg_match($pattern, $comment)其中母公司一直以:1)$word#i

2)/\s+($word)/\s+/i

3)/\b($word)/\b/i

有了这个代码:

if (preg_match($pattern, $commentdata['comment_content'])) { 
    echo 'spam'; 
} 
else { 
    echo 'true' 
} 

我得到:

1)spam这也适用于单词li NKE combination这我不想阻止

2)true

3)true

如何我作出这样的只匹配中的单词而不是单词的模式?

+0

'/ \ b($ word)/ \ b/i'甚至不是一个有效的正则表达式。那么像“双向”这样的词组合呢? – knittl 2013-05-09 20:01:29

回答

1

这个做的工作,你是解附近:

preg_match("~\b$word\b~i", $comment); 

对于某些特定的情况下,像 '双向':

,您可以改用:

preg_match("~(?<![a-z]-)\b$word\b(?!-[a-z])~i", $comment); 
+0

分界符...我应该继续阅读。谢谢。 – LouieV 2013-05-09 20:07:10

1
$pattern = "/\b{$word}/\b/i" ; 

$pattern = "/(\b{$word}\b)/i" ; 

会做这项工作。