2011-11-15 16 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

[および]は、正規表現で特別な意味を持つ文字です。あなたはリテラル[]文字を検索するための正規表現エンジンを伝えるために、それらをエスケープする必要があります:正規表現character classes

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

は、これらの文字がエスケープされていないときに何をすべきかの詳細を参照してください。それは、そうでない場合は、文字クラスを紹介する正規表現のメタ文字として解釈されます

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

1

は、あなただけのオープニング角括弧をエスケープする必要があります。

+0

Aaargh damn。私は今寝るべきです。明白なことを指摘してくれてありがとう! :) – PeeHaa

1

ブラケットをエスケープする必要があります。 \[\]のことを意味します。 あなたは持っている必要があります:

$pattern = '/\[Case (\d+)\]/'; 
関連する問題