Получил форму, которая вводит время в следующем формате: ЧЧ: MM am/pm. Часы всегда заполняются нулями (или, по крайней мере, должны быть). Получив эту ошибку:Что не так с этим 12-часовым регулярным выражением?
Предупреждение: preg_match_all(): Unknown модификатор ':' в (название файла здесь)
public static function timeToInt($time)
{
$pattern = "(?<hour>[0-9]{2}):(?<minutes>[0-9]{2}) (?<xm>[am|pm]{2})";
$matches = [];
if(preg_match_all($pattern , $time , $matches))
{
$hour = $matches['hour'];
$xm = $matches['xm'];
if($hour != 12 && $xm == "pm")
{
$hour += 12;
}
if($hour == 12 && $xm == "am")
{
$hour = 0;
}
return ($hour * 100) + $minutes;
}
return null;
}
Оберните регулярное выражение в '/' или '' # или подобный .... потому что вы не указали такой «разделитель», PCRE предполагает, что вы используете фигурные скобки '(.. .) 'как разделитель и что первая закрывающая скобка закрывает регулярное выражение .... [PHP Docs] (http://php.net/manual/en/regexp.reference.delimiters.php) –
Это прояснило это , благодаря! –
@MarkBaker, вы хотите выразить это как ответ, чтобы люди не преследовали это? В противном случае, возможно, нам следует закрыть вопрос о том, что это более простая коррекция. –