我在如何preg_match这个时间陈述方面遇到了问题。
TF 02:30 pm-04:00 am
我能够将时间分隔到数组中,但我还希望得到AM
和PM
以及字母T
和F
。
这是我正在进行的课程安排模块。我从数据库中获得的数据是该字符串。我想将它们分开,以便我可以操作我所拥有的日历的条目。
这就是我现在所拥有的。
$sampleString = 'T 02:30 pm-04:00 am';
$pattern = '/([0-1]?\d|2[0-9]):([0-5]?\d)/';
preg_match_all($pattern,$sampleString,$time);
print_r($time);
输出:
Array (
[0] => Array (
[0] => 02:30
[1] => 04:00 )
[1] => Array (
[0] => 02
[1] => 04 )
[2] => Array (
[0] => 30
[1] => 00 )
)
感谢。
答案 0 :(得分:1)
根据IMSoP的建议,将其拆分为部分会更容易(再次看,我认为您的小时正则表达式可以使用改进,因为它将接受0-29的小时数,我已将其更改为0?[1-9]|1[0-2]
相反,只接受1 - 12)
[MTWHFS]+
\s
0?[1-9]|1[0-2]
:
[0-5]?\d
\s
[ap]m
-
0?[1-9]|1[0-2]
:
[0-5]?\d
\s
[ap]m
然后将它们放在一起,用括号围绕所需的捕获组:
([MTWHFS]+)\s(0?[1-9]|1[0-2]):([0-5]?\d)\s([pa]m)-(0?[1-9]|1[0-2]):([0-5]?\d)\s([pa]m)