2011-12-18 46 views
0

我在這裏和其他留言板上看過其他正則表達式的其他幾個問題。我的頭靠在牆上,因爲我似乎無法把頭圍繞在這裏。 (或一般的正則表達式)正則表達式和preg_split()

我從MYSQL數據庫中拉時間戳。這是自動生成的,所以它的格式正常:2011-12-17 21:30:56

我想把它分解成一個數組而不必使用多個explode。我假設preg_split()就是這裏的答案。如果你有一個更好的主意,我是所有的耳朵(儘管我覺得我需要弄清楚如何在某個點上使用正則表達式。)

無論如何,我試圖在每個「 - 「」:「和」「。後一點的讀它似乎是一個字符類就是答案,這裏是我的代碼,這是根本不工作:

$date_arr = preg_split("/ [- :] /", $order['order_date']); 

這是輸出:Array ([0] => 2011-12-17 21:30:56)

我要去哪裏錯了?

+0

這不一定回答你關於正則表達式的問題,但你有沒有想過只使用MySQL o使用PHP的'date()'函數來分離每個日期組件,而不是使用'preg_split()'? – 2011-12-18 08:47:18

+1

這將是'strtotime()'。你的正則表達式的問題是它也在分隔符列表的周圍尋找兩個空格。 – mario 2011-12-18 08:50:20

回答

3

preg_split失敗的原因是因爲周圍[- :]的空間。

由於它目前只寫在" - ","   "" : "上。

$date_arr = preg_split("/ [- :] /", ...); // original 
$date_arr = preg_split("/[- :]/", ...); // fixed 

除了使用功能,如explodepreg_split分裂你的字符串,使用strtotimegetdate

print_r (
    getdate (strtotime ("2011-12-17 21:30:56")) 
); 

...

Array 
(
    [seconds] => 56 
    [minutes] => 30 
    [hours] => 21 
    [mday] => 17 
    [wday] => 6 
    [mon] => 12 
    [year] => 2011 
    [yday] => 350 
    [weekday] => Saturday 
    [month] => December 
    [0] => 1324153856 
) 
+0

我知道它必須比我製作它容易。 #facepalm, – drewwyatt 2011-12-18 15:46:50

1

你在正則表達式中有空間空間。試試這個:

preg_split("/[- :]/", '2011-12-17 21:30:56'); 
相關問題