2013-11-01 4 views
0

Что с этимpreg_match Неизвестная ошибка модификатор '('

public static function validaDataHoraBR($data_hora){ 
    $pattern = "/^([1-9]|0[1-9]|[1,2][0-9]|3[0,1])/([1-9]|1[0,1,2])/\d{4} ([0-1][0-9]|[2][0-3])(:([0-5][0-9])){1,2}(:([0-5][0-9])){1,2}$/"; 
    return (preg_match($pattern, $data_hora)) ? array(true) : array(false,' não é uma data e hora no formato BR!<br>'); 
} 

Этот шаблон проверки этого - 20/08/2011 21:00:00

Ошибка: Сообщение: preg_match() [функция .preg матча]: Неизвестный модификатор '('

+3

Почему вы используете Regex для проверки даты? Использовать класс DateTime вместо этого (http://stackoverflow.com/a/19271434/1438393). –

ответ

3

побег / в регулярном выражении

"/^([1-9]|0[1-9]|[1,2][0-9]|3[0,1])\/([1-9]|1[0,1,2])\/\d{4} ([0-1][0-9]|[2][0-3])(:([0-5][0-9])){1,2}(:([0-5][0-9])){1,2}$/" 
#         ^    ^

. В противном случае / распознается как конец регулярного выражения.

Или использовать различные разделители:

"#^([1-9]|0[1-9]|[1,2][0-9]|3[0,1])/([1-9]|1[0,1,2])/\d{4} ([0-1][0-9]|[2][0-3])(:([0-5][0-9])){1,2}(:([0-5][0-9])){1,2}$#" 
+0

'+ 1'. Кроме того, вы можете использовать разные разделители. :) –

+0

@AmalMurali, я добавил это. Спасибо за комментарий. – falsetru

Смежные вопросы