0

我的问题是:

输入:数千个缩写消息。

输出:过滤后的消息

过滤器:((消息有警报)或(消息有紧急情况))和(消息没有恢复)

例子:

  1. Ur001 普通用户按用户打开(真)

  2. 恐慌区警报安全系统 Zn2 区 2 名称(假)

  3. 键盘应急安全系统 Ur1 Uer 1 名称(假)

  4. 键盘紧急恢复安全系统 Ur1 Uer 1 名称 (True)

我知道他们的情况有很多类似的问题。哪种方式更好?

4

1 回答 1

4

由于您的搜索词是已知的 ( "Alarm", "Emergency", "Restore") 正则表达式是一个糟糕的选择。您应该为此使用strpos(或stripos忽略大写)。

话虽如此,如果您想将这些单词作为实际单词而不是子字符串进行搜索(即,您不想"Restored"触发"Restore"匹配,那么您别无选择,只能使用正则表达式。在这种情况下,\b请在单词之前和之后放置找到他们。像这样的东西:

if(preg_match("/\b(?:Alarm|Emergency)\b/i",$str) && !preg_match("/\bRestore\b/i",$str))

如果您特别想要大写,请删除i修饰符。

于 2013-03-01T00:23:02.313 回答