2011-12-12 39 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

相关问题