[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярка
qari
Принимаю с POST дату рождения видом: mm/dd/yyyy
Как регуляркой сделать проверку на правельность данных?
inpost
Воспользуйся готовым checkdate

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
qari
Цитата (inpost @ 31.01.2013 - 19:33)
Воспользуйся готовым checkdate

Ну вот есть такой вариант:


/*
** check a date
** dd.mm.yyyy || mm/dd/yyyy || dd-mm-yyyy || yyyy-mm-dd
*/


function check_date($date) {
if(strlen($date) == 10) {
$pattern = '/\.|\/|-/i'; // . or / or -
preg_match($pattern, $date, $char);

$array = preg_split($pattern, $date, -1, PREG_SPLIT_NO_EMPTY);

if(strlen($array[2]) == 4) {
// dd.mm.yyyy || dd-mm-yyyy
if($char[0] == "."|| $char[0] == "-") {
$month = $array[1];
$day = $array[0];
$year = $array[2];
}
// mm/dd/yyyy # Common U.S. writing
if($char[0] == "/") {
$month = $array[0];
$day = $array[1];
$year = $array[2];
}
}

// yyyy-mm-dd # iso 8601
if(strlen($array[0]) == 4 && $char[0] == "-") {
$month = $array[1];
$day = $array[2];
$year = $array[0];
}
if(checkdate($month, $day, $year)) { //Validate Gregorian date
return TRUE;

} else {
return FALSE;
}
}
else {
return FALSE; // more or less 10 chars
}
}


check_date('21.02.1983');
check_date('21-02-1983');
check_date('02/21/1983'); // Common U.S. writing
check_date('1983-02-21'); // iso 8601


Но как по мне регулярка будет лучше
Быстрый ответ:

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