我有一个日程表的字符串
Jun 4, 2018 => Jun 12, 20018
我要做的是获取每个日期的每个值,如下所示:
$schedule = explode('=>', 'Jun 4, 2018 => Jun 12, 20018');
foreach ($schedule as $date) {
preg_match('/([a-z]{3})|(\b[0-9]{2}\b)|([0-9]{4})/i', $date, $values);
$day = $values[1];
$month = $values[0];
$year = $values[2];
echo $day.'-'.$month.'-'.$year;
}
我的期望是让每个捕获组从preg_match()
中的$values
按顺序排列在字符串中,我期望的最终结果是
4-6-2018
12-6-2018
与
等样本相同 Jan 2007 =expected-result> 0-6-2018
12 2007 =expected-result> 12-0-2018
2007 =expected-result> 0-0-2018
但我收到了错误
E_NOTICE : type 8 -- Undefined variable: value -- at line 8
Jun-Jun-
E_NOTICE : type 8 -- Undefined variable: value -- at line 8
Jun-Jun-
我不知道是否可以使用DateTime
代替RegEx
,因为日期格式不是静态的,并且有3种不同的格式。
答案 0 :(得分:2)
您正在使用:
$year = $value[2];
但你错过了'在价值结束时。将其更改为:
$year = $values[2];
顺便说一下,您可以更轻松地使用以下内容:
$schedule = explode('=>', 'Jun 4, 2018 => Jun 12, 2018');
$start = date('d-m-Y',strtotime($schedule[0])) ;
$end = date('d-m-Y',strtotime($schedule[1])) ;