проверка даты в формате php - PullRequest
2 голосов
/ 26 апреля 2011

Я пытаюсь проверить поле даты "YYYYMMDD" с помощью регулярных выражений PHP.Я пробовал что-то вроде этого

/([0-9]{4})([0-9]{2})([0-9]{2})/

, но в этом он будет принимать любые две цифры, такие как 01-99 для ММ или ДД, но я ищу что-то для 01-12 для ММ и 01-31 для ДД.Любой совет по этому поводу?

спасибо

Ответы [ 5 ]

4 голосов
/ 26 апреля 2011

Это должно сделать работу:

function dateValidate($date) {
    $t = strtotime($date);
    return date('Ymd', $t) == $date;
}

edit: Стоит отметить, что это будет не так быстро, как регулярное выражение, но с точки зрения заметной производительности будет работать нормально.

3 голосов
/ 26 апреля 2011

Вместо регулярных выражений вы также можете разбить строку и использовать checkdate, чтобы проверить, является ли дата действительной.

1 голос
/ 26 апреля 2011

Regex не кажется очень практичным для проверки даты. Почему бы не разбить его на части, а затем использовать checkdate()?

0 голосов
/ 03 апреля 2012

НЕ ИСПОЛЬЗУЙТЕ checkdate, поскольку checkdate ('1 \' ',' 1 ',' 2000 ') подтверждает TRUE.

0 голосов
/ 26 апреля 2011

Для месяца вы можете использовать:

(0[1-9]|1[012])

Для дней:

(0[1-9]| [12][0-9]|3[01])

Несколько хороших примеров здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...