从字符串中获取id

时间:2011-11-15 23:49:57

标签: php regex

我有一个包含案例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

不是我真正想要的东西:)

模式应该是什么样的,或者某处有另一个缺陷?

3 个答案:

答案 0 :(得分:4)

[]是正则表达式中具有特殊含义的字符。您需要转义它们以告诉正则表达式引擎搜索文字[]字符:

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

详细了解这些字符在未转义时的作用:正则表达式character classes

答案 1 :(得分:1)

你只需要逃开开方括号:

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

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

答案 2 :(得分:1)

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

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