php
  • regex
  • caching
  • preg-match
  • 2011-12-11 63 views 0 likes 
    0

    我正在研究一個涉及要執行的緩存類型的項目。基於不同緩存名稱的情況下可以完成多個緩存。在文件中,我storying緩存,像這樣:preg_match從字符串中輸入密鑰和日期

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

    當我尋找它,我想的preg_match這樣的:

    $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}}/"; 
    

    還要注意逃脫的領先\{捲曲。

    相關問題