2011-11-15 189 views
1

我有一个字符串,其中包含一个案例ID。从字符串获取ID

例字符串:

[Case 123] 
lorem[Case 123]ipsum 
[Case 123]ipsum 

我想从字符串的ID(123)。

我试图(对字符串[Case 1359] needsmoreinfo):

$pattern = '/[Case (\d+)]/'; 
preg_match($pattern, $message->subject, $matches, PREG_OFFSET_CAPTURE); 

这就造成:

o[0][0]: C 
    [1]: 1 

算不上什么我一直在寻找:)

应该采取什么模式的样子,或者在某处存在另一个缺陷?

回答

4

[]是正则表达式中具有特殊含义的字符。你需要逃离他们告诉正则表达式引擎来搜索文本[]字符:

$pattern = '/\[Case (\d+)\]/'; 
preg_match($pattern, $message->subject, $matches, PREG_OFFSET_CAPTURE); 

查看更多关于这些字符转义做时:正则表达式character classes

1

你只需要躲避开括号:

$pattern = '/\[Case (\d+)]/'; 

它,否则解释为它引入了一个字符类的正则表达式元字符。

+0

Aaargh该死的。我现在应该去睡觉了。感谢您指出明显! :) – PeeHaa

1

您需要转义括号。我的意思是做\[\]。 你应该有:

$pattern = '/\[Case (\d+)\]/';