2011-12-12 38 views
0

我有一個用PHP編寫的系統,它將來自多個數據庫的記錄聚合爲一個。當我這樣做時,我需要檢測每條記錄是否爲ABNORMAL,如果是,則將其標記爲如此。PHP正則表達式 - 檢測字符串是否包含一個詞但不在另一箇中

要做到這一點,我需要爲preg_match()的模式,所以如果給定的字符串包含單詞NORMAL但不ABNORMAL它會返回false。給出的字符串可能在多行。

我遇到的問題是,這個詞ABNORMAL包含NORMAL

任何人都可以幫忙嗎?

+0

如果第一次搜索返回「false」,爲什麼不先搜索「ABNORMAL」,然後搜索「NORMAL」? – Blender

回答

3

使用Word boundry字符\b

preg_match("|\bNORMAL\b|", $subject); 

注意,它是區分大小寫,不區分大小寫的版本是這樣的:

preg_match("|\bNORMAL\b|i", $subject); 

但如果你可以控制你的數據庫,您可能需要使用0和1(或至少N和A),而不是NORMAL和ABNORMAL。

+2

你的意思是'\ b',而不是'\ d' – webbiedave

+1

天啊! 2小時的睡眠對我沒有好處:X –

+0

工作,謝謝! – user1094128

相關問題