2011-12-11 1 views
0

私は実行されるタイプのキャッシュを含むプロジェクトに取り組んでいます。異なるキャッシュ名に基づいて複数のキャッシュを実行できます。preg_match文字列からのキーと日付

{cache:2011-12-11 02:01:47} 

をそして、私はそれを検索したとき、私はこのようにそれをするpreg_matchしようとしています:ファイルで、私はそうのようなキャッシュをstoryingい

$match = "{cache:/\d{4}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2}/}"; 
$str = 'FIND ME! {cache:2011-12-11 02:01:47}'; 
if (preg_match($match, $str, $matches)) { 
print "it's a match"; 
    print_r($match); 
} 

問題があり、それはそれを見つけることはありません。しかし、これは私がするとうまくいくでしょう:

$match = "/\d{4}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2}/"; 

私はpreg_matchステートメントで間違っていますか?そして、私はpreg_matchより高速です使用することができる文字列検索のタイプ​​ですか?

+0

'$ match'をスラッシュ('/')で囲んでみてください。 – Bojangles

答えて

2

あなたの中にコードの正規表現は、あなたが&貼り付けた区切り文字をコピーするので、彼らが所属していない場合は、動作しません。

$match = "{cache:/\d{4}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2}/}"; 
       ^         ^
       Eeek!         Eeek! 

あなた{}は、正規表現の区切り文字になりました。この方法で、内側のスラッシュをしました検索するリテラル文字として解釈されます。

むしろされている必要があります。また、

$match = "/\{cache:\d{4}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2}}/"; 

注エスケープ大手\{カーリー。

関連する問題