2013-05-09 51 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" ; 

會做這項工作。