获得一个以下列格式输入时间的表单:HH:MM am / pm。小时总是零填充(或至少应该是)。收到此错误:
警告:preg_match_all():未知的修饰符':'在(文件名在这里)
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;
}
答案 0 :(得分:0)
您需要将正则表达式包装在/
或#
“分隔符”或类似内容中。
因为你没有指定任何这样的“分隔符”,pcre假定你使用大括号(...)作为分隔符,并且第一个右大括号关闭了正则表达式。
结束分隔符之后的任何内容都被视为switch
,如果正则表达式(例如i
使其不区分大小写)和:
在您第一次关闭后立即更改行为大括号不是有效的开关,因此你得到的错误信息。