[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP задания для практики
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
bodja
А полу-регулярка подойдет? :D
if (preg_match('#^(\d{4}).(\d{2}).(\d{2})$#', $_POST['date'], $matches) && checkdate($matches[2], $matches[3], $matches[1]))
Invis1ble
bodja
нет smile.gif

neadekvat
я все же попробую добить, совсем немного осталось smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

neadekvat
Цитата (Invis1ble @ 6.09.2011 - 01:16)
я все же попробую добить, совсем немного осталось

Представь хоть что-то - хочу перед сном еще поразминаться, а то потом опять времени не будет)
Invis1ble
что-то у меня самого мозг вскипел, попозже продолжу smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Invis1ble
Ну вот, как-то так:
людям со слабой психикой, беременным, кормящим грудью и детям нажимать сюда не рекомендуется
$pattern =
'/^
# год
(?!0000)\pN{2}(?:(
(?:
# високосный
([02468])|[13579])(?(2)[048]|[260]))|
# невисокосный
\pN{2}
)
\.
# месяц
(?:(0)(?!0)|1)(?(3)[0-9]|[0-2])
\.
# число
(?!00)(?:(?<!02\.)(3)|[0-2])(?(4)(?(?<=(?:01|03|05|07|08|10|12).{2})1|0)|
# 1-3 триады
(?(?<=02.{2})
# февраль
(?(?<=2)
# 3-я триада
(?(1)
# високосный год
[0-9]|
# невисокосный год
[0-8]
)|
# 1-2 триады
[0-9]
)|
# не февраль
[0-9]
)
)
$/ux'
;

тестим
$dates = array(
'1352.01.01',
'2000.02.29',
'2004.02.29',
'2003.01.01',
'2001.02.29',
'1989.04.31',
'2010.13.05',
'2011.11.32',
'0001.01.01'
);

$pattern = '/^(?!0000)\pN{2}(?:((?:([02468])|[13579])(?(2)[048]|[260]))|\pN{2})\.(?:(0)(?!0)|1)(?(3)[0-9]|[0-2])\.(?!00)(?:(?<!02\.)(3)|[0-2])(?(4)(?(?<=(?:01|03|05|07|08|10|12).{2})1|0)|(?(?<=02.{2})(?(?<=2)(?(1)[0-9]|[0-8])|[0-9])|[0-9]))$/u';

foreach ($dates as $date) {
$items = explode('.', $date);

echo $date . ' ';
var_dump((bool)preg_match($pattern, $date));
echo ' ';
var_dump(checkdate($items[1], $items[2], $items[0]));
echo '<br />';
}


Ищите баги :)

neadekvat
Вот мой контрудар ;)

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.