2011-12-18 6 views
0

私は他の正規表現の質問のいくつかをここや他の掲示板で見てきました。私は壁に向かって私の頭を包んでいるように見えないので、私は壁に頭を打っています。 (または一般的な正規表現)正規表現とpreg_split()

私はMYSQLデータベースからタイムスタンプを引っ張っています。これは自動的に生成されるので、通常はフォーマットされます:2011-12-17 21:30:56

複数の爆発を使わずに配列に分割したいと思います。私はpreg_split()と答えています。あなたが良いアイデアを持っていれば、私はすべての耳です(とにかく、ある時点で正規表現を使用する方法を理解する必要があるように感じます)。

いずれにしても、 - "": "と" "。文字クラスが答えているようにそれはそう読んだのビットの後、ここに私のコードがあり、それは単純に機能していません。

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

これが出力されます。私は間違っているつもりですArray ([0] => 2011-12-17 21:30:56)

を?

+0

これは必ずしもありません正規表現についてのあなたの質問に答えるが、あなたはちょうどMySQLのoを使用して考えている'preg_split()'の代わりに、PHPの 'date()'関数を使って各日付コンポーネントを区切ります。 –

+1

これは 'strtotime()'になります。正規表現の問題は、セパレータリストの周りに2つの空白があることです。 – mario

答えて

3

:これを試してみてください。

" - ""   "および" : "にしか現れていません。代わりにstrtotimegetdateを使用し、あなたの文字列を分割するために、このようなexplodepreg_splitなどの機能を使用しての

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

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

1

あなたは正規表現に不必要なスペースがあります。あなたのpreg_splitが失敗した理由が原因[- :]を囲むスペースのある

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