2014-09-04 140 views
0

我想從'YYYY-MM-DD hh:mm:ss格式的字符串中獲取日期時間。PHP獲取日期時間每個preg_match

要clearify:我是從一個API得到一個字符串,現在字符串看起來是這樣的:

{ts '2014-09-02 14:42:49'} 

但字符串可以改變,所以我不會只是縮短字符串只DateTime這就是爲什麼我想通過RegEx接收它。因爲那麼字符串可以隨意更改,只要日期格式保持不變,我將始終得到正確的結果。

我發現這個question與解決方案,並試圖用它來處理我的情況。 正則表達式是這樣的:

$regEx = "(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})"; 

我也試過:

$regEx = "(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})"; 

它的工作對regexr.com,但我不能讓它在我PHP代碼工作。

整個代碼是這樣的:

 $result = array(); 
     $regEx = "(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})"; 
     preg_match($details['date'], $regEx, $result); 
     var_dump($result); 

var_dump提供了一個空數組。

我該如何定義RegEx,以便它與preg_match一起工作?

+1

哇你爲什麼要爲它寫一個正則表達式? http://php.net/manual/en/datetime.createfromformat.php是綽綽有餘的 – 2014-09-04 07:42:29

+0

['strtotime()'](http://php.net/strtotime) – Dale 2014-09-04 07:42:31

+0

每當有東西不工作:啓用' error_reporting'。 – mario 2014-09-04 07:42:33

回答

3

PHP正則表達式需要,並且preg_match參數的順序也是錯誤的。

$regEx = '/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/'; 
preg_match($regEx, $details['date'], $result); 
var_dump($result); 

如果$details['date']只是日期時間格式字符串,你可以考慮使用DateTime類代替。

$datetime = new DateTime($details['date']); 
+0

謝謝你,從未使用過RegEx,純粹是我的初學者錯誤。我清除了我的問題,$ details ['date']不僅僅是一個日期時間格式字符串,但它包含一個,這就是爲什麼我想要RegEx! – KhorneHoly 2014-09-04 07:49:55