Получил форму, которая вводит время в следующем формате: HH: MM am/pm. Часы всегда заполняются нулями (или, по крайней мере, должны быть). Получение этой ошибки:
Предупреждение: preg_match_all(): Неизвестный модификатор ':' in (имя файла здесь)
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 предполагает, что вы используете фигурные скобки (...) в качестве разделителя и что первая закрывающая скобка закрывает регулярное выражение.
Все, что связано с закрывающим разделителем, считается switch
который изменяет поведение, если регулярное выражение, например, i
чтобы сделать его нечувствительным к регистру, и :
сразу после вашей первой закрывающей скобки не является допустимым коммутатором, поэтому сообщение об ошибке, re получение.
/
или#
или аналогичном .... потому что вы не указали такого "разделителя", pcre предполагает, что вы используете скобки(...)
в качестве разделителя, и что первая закрывающая скобка закрывается регулярное выражение .... PHP Docs