2011-11-15 191 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+)\]/';