2009-09-02 50 views
1

从字符串解析时间的最佳方法是什么?regex/php:从字符串解析时间?

示例字符串:“这是10:45这是10:48,10:49,10:50,22:15”;

预期回报:

[0] = 10:45

[1] = 10时48分

[2] = 11时差11分

[3] = 10: 50

[4] = 22:15

感谢您的任何答复!!

回答

6

这会给你希望和限制你的小时/分钟号码有效值小时的第一位置和分钟的第一位置输出:

$y = "this is 10:45 this is 10:48, 10:49, 10:50, 22:15"; 
preg_match_all("/(([0-1]\d|2[0-3]):[0-5]\d)/",$y,$matches); 
print_r($matches[1]); 
/* 
Outputs: 
Array ([0] => 10:45 [1] => 10:48 [2] => 10:49 [3] => 10:50 [4] => 22:15) 
/* 
+1

如果你不想匹配正确的时间,你应该改变正则表达式为'/([0-1] \ d | 2 [0-3]):[0-5] \ d /',你的'27:00' – RaYell 2009-09-02 04:49:29

+0

这是一个不错的改进,我会编辑我的答案以添加它。谢谢。 – zombat 2009-09-02 05:51:57

0

这看起来像一个非常简单的情况。尝试preg_match_all用 “/ \ d \ d:\ d \ d /”

2
preg_match_all('/\d{2}:\d{2}/', $string, $matches); 

您将在$matches阵列中的所有的比赛。

+1

你只需要在所有比赛你使用'preg_match_all()' – 2009-09-02 04:17:55

+0

@Chris Lutz - 好点。 – RaYell 2009-09-02 04:47:12