2011-12-18 75 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');