0

我有这个日期和时间字符串

2013-10-21 09:49:51 2013-10-22 10:23:06 2013-10-22 10:23:20 2013-10-22 10:33:34 2013-10-22 10:33:40 2013-10-23 15:14:04 2013-10-23 15:14:09 2013-10-23 15:15:04 2013-10-23 15:26:18 2013-10-23 15:27:26 2013-10-23 15:27:29 2013-10-23 15:37:16 2013-10-23 15:45:08 2013-10-23 15:47:19 2013-10-23 16:05:37 2013-10-23 16:23:28 2013-10-23 16:31:09 2013-10-23 16:32:08 2013-10-23 16:32:54 2013-10-23 17:11:28 2013-10-23 17:12:24 2013-10-23 17:12:33 2013-10-23

我需要一些帮助使用preg_match.

预期输出数组的示例:

datetimeArr=array(0=>'2013-10-21 09:49:51',1=>'2013-10-22 10:23:06',2=>'2013-10-23 15:45:08')
4

5 回答 5

1

如果你必须使用正则表达式:

.{10}\s.{8}
于 2013-10-25T07:53:11.407 回答
0

使用 RegEx 玩得开心。我只会在 2013 的位置爆炸字符串。然后您可以轻松地将其添加到数组中。

于 2013-10-25T07:48:54.217 回答
0

此处无需使用正则表达式,只需使用,str_split因为您的块是固定长度的:

$dtStrings = "2013-10-21 09:49:51 2013-10-22 10:23:06 2013-10-22 10:23:20 2013-10-22 10:33:34 2013-10-22 10:33:40 2013-10-23 15:14:04 2013-10-23 15:14:09 2013-10-23 15:15:04 2013-10-23 15:26:18 2013-10-23 15:27:26 2013-10-23 15:27:29 2013-10-23 15:37:16 2013-10-23 15:45:08 2013-10-23 15:47:19 2013-10-23 16:05:37 2013-10-23 16:23:28 2013-10-23 16:31:09 2013-10-23 16:32:08 2013-10-23 16:32:54 2013-10-23 17:11:28 2013-10-23 17:12:24 2013-10-23 17:12:33 2013-10-23";

$dtArray = str_split($dtStrings, 20);

当然,您将在每个元素中都有一个尾随空格字符(可能最后一个除外)。要删除它,只需遍历rtrim在元素上运行的数组。

$dtArray = array_map('trim', str_split($dtStrings, 20));
于 2013-10-25T07:49:08.780 回答
0

如果你真的需要使用正则表达式,最简单的方法是:

preg_match_all('/(.{19})\s?/', $input, $result);
$result = $result[1];

否则最好使用这种单行解决方案,因为 regexp 对于此任务来说是一种过度杀伤:

$result = array_map('trim', str_split($input, 20));
于 2013-10-25T08:11:48.923 回答
0
$input = '2013-10-21 09:49:51 2013-10-22 10:23:06 2013-10-22 10:23:20 2013-10-22 10:33:34 2013-10-22 10:33:40 2013-10-23 15:14:04 2013-10-23 15:14:09 2013-10-23 15:15:04 2013-10-23 15:26:18 2013-10-23 15:27:26 2013-10-23 15:27:29 2013-10-23 15:37:16 2013-10-23 15:45:08 2013-10-23 15:47:19 2013-10-23 16:05:37 2013-10-23 16:23:28 2013-10-23 16:31:09 2013-10-23 16:32:08 2013-10-23 16:32:54 2013-10-23 17:11:28 2013-10-23 17:12:24 2013-10-23 17:12:33 2013-10-23';

preg_match_all('/\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}/', $input, $output_array);
var_dump($output_array);
于 2013-10-25T08:07:57.900 回答