Как написать код правильно, чтобы Переменная сравнивалось (проверялось) с форматом даты dateFormat: 'Y-mm-dd'}, То есть переменная должен иметь вид 'Y-mm-dd' Переменная может иметь любое число. $a="13123123"; $b="2013"; $c="2013-10-13"; $d="2013-10"; ТО есть $с ИСТИНА.
== не работает? Добавлено спустя 1 минуту 58 секунд: А понял, попробуй регуляркой Добавлено спустя 1 минуту 24 секунды: Код (PHP): $pattern = '/\d{4}-\d{2}-\d{2}/'; Попробуй так. Добавлено спустя 53 секунды: Правда месяц может оказаться и 99... это проблема?
меня что то постоянно на регулярки тянет((( можно еще и через CreateFromFormat проверить попробуй http://stackoverflow.com/questions/17492533/checking-if-a-s ... ate-format
<?php $a = '2001-12-12'; $pattern = '/\d{4}-\d{2}-\d{2}/'; if ( $a == $pattern) { echo "истина"; } else { echo "ложь"; } ?> Ложь
Я дал ссылку там пример более красивый Код (PHP): $date = DateTime::createFromFormat('Y-mm-dd', $yourStringWhichMightBeADate); if ($date) { // it's a date, so use it } Попробуй Добавлено спустя 50 секунд: Ты в курсе что такое регулярное выражение?
1. проверить наличие минуса. если есть - пасить strtotime() 2. сделать (int) и проверить что число больше 2050 скажем так. если да - то это секунды юникса, считай, что спарсили. Если нет - то год. приписать к строке "-1-1" и парсить strtotime() Добавлено спустя 1 минуту 23 секунды: о да, меня тоже тянет на всякое переодически. приходтся переучиваться
нет Добавлено спустя 7 минут 3 секунды: А как его правильно реализовать? Что то у меня в голове каша получилось. Добавлено спустя 6 минут 38 секунд: Код (Text): <?php $a = '2001-12-12'; $date = DateTime::createFromFormat('Y-mm-dd', '2013-05-13'); if ( $date == $a) { echo "истина"; } else { echo "ложь"; } ?> ЛОЖЬ Что то не получается. Поспешил с выводами своей работы. СПАСИБО всем. Добавлено спустя 41 минуту 3 секунды: Код (Text): <?php function ProverkaFormataDati($data){ $regularka = "/^([0-9]{2})-([0-9]{2})-([0-9]{4})$/"; if ( preg_match($regularka, $data, $razdeli) ) : /* Формат проверки - MM, DD, YYYY: */ if ( checkdate($razdeli[2],$razdeli[1],$razdeli[3]) ) return true; else return false; else : return false; endif; } /** * Примеры использования функции: */ $data1 = "20-12-2012"; if ( ProverkaFormataDati($data1) ) echo "$data1 - формат даты указан верно.<br />"; else echo "$data1 - формат даты указан неверно.<br />"; $data2 = "436543653"; if ( ProverkaFormataDati($data2) ) echo "$data2 - формат даты указан верно.<br />"; else echo "$data2 - формат даты указан неверно.<br />"; ?>
Что тут не понятно? $date булево занчение. если $yourStringWhichMightBeADate дата в правильном формате то $date true иначе false.
Да я так и сделал, выпадает меню календаря и там выбираешь дату. но есть маленький косяк, туда можно и в ручную вводить, вот и хочу поставить скажем (защита от дураков) чтобы не могли вводить подряд всякие цифры.
Почему глупости? но он сработал. Чем выше написанное (Я новичок и не разобрался как правильно писать код). Вот то что изменил в этом коде, начал работать Код (Text): <?php function ProverkaFormataDati($data){ $pattern = "/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/"; // Основной 2013-10-22 if ( preg_match($pattern, $data, $razdeli) ) : if ( checkdate($razdeli[2],$razdeli[3],$razdeli[1]) ) return true; else return false; else : return false; endif; } $data1 = "22-10-2013"; if ( ProverkaFormataDati($data1) ) echo "$data1 - формат даты указан верно.<br />"; else echo "$data1 - формат даты указан неверно.<br />"; $data2 = "2013-10-22"; if ( ProverkaFormataDati($data2) ) echo "$data2 - формат даты указан верно.<br />"; else echo "$data2 - формат даты указан неверно.<br />"; $data3 = "10-22-2013"; if ( ProverkaFormataDati($data3) ) echo "$data3 - формат даты указан верно.<br />"; else echo "$data3 - формат даты указан неверно.<br />";
Ну потому что вы 4 строками пишете то, что можно одной строкой написать. Я же вам показал в своём сообщении.
а почему проверять надо именно в пхп а не при вводе ? есть замечательный модуль jquery validator http://plugins.jquery.com/validation/ вот демка именно по дате http://jqueryvalidation.org/date-method
блин посмотрел дальше - нашел недостаток - там дата проверяется в формате исо 01/01/2010 но есть локализация на русский может и формат даты можно поменять
там помойму достаточно из папки подгрузить js русик .. /localization/messages_ru.js только грузи его после валидатора