与php匹配的单词

时间:2013-05-09 19:55:12

标签: php regex

在做了一些研究后,我似乎无法找到解决问题的方法。我有一个坏词列表,我希望能够看到用户是否留下了任何这些词的评论。我尝试过不同的正则表达式但没有成功。顺便说一句,我没有正则表达的大师。

让我说我的名单上有$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这也是我不想阻止的单词linke combination的情况

2)true

3)true

如何创建仅匹配单词而不匹配单词的模式?

2 个答案:

答案 0 :(得分:1)

这样做,你就在解决方案附近:

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

对于某些特殊情况,例如“双向”:

你可以改用:

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

答案 1 :(得分:1)

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

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

会做的工作。