[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как проверить формат даты?
DeeKeiD
Нужно чтоб скрипт пропускал дату только по формату :YYYY-MM-DD HH:NN:SS
например 2011-07-02 10:03:00



Спустя 3 минуты, 41 секунда (2.07.2011 - 10:08) Invis1ble написал(а):
DeeKeiD
Покажи хотяб свои наработки что-ли

Спустя 52 секунды (2.07.2011 - 10:09) DeeKeiD написал(а):
preg_match("/^[-0-3000\]-([-0-9\]+\.){1,50}([0-9A-Z]){2,4}$/i",$string)

выдрал из php-fusion'a пытаюсь приспособить под свои нужнды, но ничо непонятно..

Спустя 3 минуты, 48 секунд (2.07.2011 - 10:13) Invis1ble написал(а):
DeeKeiD
Цитата
ничо непонятно

ты хоть сам понял, что ты тут написал?
вот именно

Спустя 49 секунд (2.07.2011 - 10:13) DeeKeiD написал(а):
неочень...
ну так поэтому и прошу помощи...

Спустя 17 минут, 37 секунд (2.07.2011 - 10:31) Invis1ble написал(а):
#^\d{4}(?:-\d{2}){2} \d{2}(?::\d{2}){2}$#
потом надо разбить строку на фрагменты и проверить, чтоб не было такого: 9999-17-32 25:99:99
хотя это можно и одной регуляркой сделать, но я не знаю, как такие regexp строятся

Цитата
ну так поэтому и прошу помощи...

перед тем, как просить помощи, стоило бы сначала самому что-то почитать и попробовать сделать, а не тупо копипастить в надежде что прокатит

Спустя 12 минут, 41 секунда (2.07.2011 - 10:44) DeeKeiD написал(а):
Спасибо, но почему-то не работает :(

$start_date = $year.'-'.$month.'-'.$day.' '.$hour.':'.$minute.':00';
if(!preg_match('#^\d{4}(?:-\d{2}){2} \d{2}(?::\d{2}){2}$#', $start_date))
{
echo 'err';
}
else
{
echo 'ok';
}

выдаёт err...

пойду придумывать извращённый способ без регулярки

Спустя 4 минуты, 38 секунд (2.07.2011 - 10:48) Invis1ble написал(а):
DeeKeiD
покажи, что получается в $start_date

Спустя 2 минуты, 58 секунд (2.07.2011 - 10:51) DeeKeiD написал(а):
2011-07-02 10:51:00

Спустя 3 минуты, 9 секунд (2.07.2011 - 10:54) Invis1ble написал(а):
DeeKeiD
var_dump((bool)preg_match('#^\d{4}(?:-\d{2}){2} \d{2}(?::\d{2}){2}$#', '2011-07-02 10:51:00')); // true

все работает

Спустя 5 минут, 14 секунд (2.07.2011 - 11:00) DeeKeiD написал(а):
Свернутый текст

// Дата вводится методом POST
$year = isset($_POST['year'])?$_POST['year']:NULL;
$month = isset($_POST['month'])?$_POST['month']:NULL;
$day = isset($_POST['day'])?$_POST['day']:NULL;
$hour = isset($_POST['hour'])?$_POST['hour']:NULL;
$minute = isset($_POST['minute'])?$_POST['minute']:NULL;
$start_date = $year.'-'.$month.'-'.$day.' '.$hour.':'.$minute.':00';

if(!preg_match('#^\d{4}(?:-\d{2}){2} \d{2}(?::\d{2}){2}$#', $start_date))
{
echo 'err<br>';
echo $start_date;
}
else
{
echo 'ok';
}

Выдаёт ошибку

Разобрался, не работало из за &nbsp; вместо обычного пробела

Спустя 10 минут, 16 секунд (2.07.2011 - 11:10) Invis1ble написал(а):
DeeKeiD
А причем здесь моя регулярка? значит у тебя дата кривая
$start_date = '2011-07-02 10:51:00';

if(!preg_match('#^\d{4}(?:-\d{2}){2} \d{2}(?::\d{2}){2}$#', $start_date))
{
echo 'err<br>';
echo $start_date;
}
else
{
echo 'ok';
}

ok :)


_____________
Бесполезно просить пощады у цезаря
Фатальная ошибка : Звонок в неопределенную функцию ©
Быстрый ответ:

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