Как проверить правильность ввода данных, в частности даты? Вроде бы есть такая функция, но в описании её ничего не сказано - что означают квадратные скобки, что фигурные (это уже сам по чуть-чуть), что за ^ и т.д. где бы об этом почитать? PHP: ereg ("[0-9]{2}.[0-9]{2}.[0-9]{4})", $data) есть конечно вариант PHP: list($dd,$mm,$yy) = explode(".",$data); можно потом отдельно поразвлекаться: и ДД проверить, что б не больше 31, и ММ что б не больше 12, да и год, что б не перепутали, но может есть попроще решение? общий смысл: проверить корректность ввода 2-х дат, и убедиться, что бы вторая не была "меньше" первой. заранее спасибо.
Код (Text): \b(0?[1-9]|[12][0-9]|3[01])[- /.](0?[1-9]|1[012])[- /.](19|20)?[0-9]{2}\b формат dd/mm/yyyy и d/m/yy, разделители - точка, слеш и мынус
Слишком много вариантов написания даты. Не все проверяются грамматически. Пример: второе марта 2008 г. Варианты: 2/3/08 3/2/08 (США) 3/2/2008 3.2.08 2 марта 2008 и т.п. Вывод: нельзя разрешать пользователю вводить дату как ему хочется. Вариантов я могу предложить три: 1. Ввод из календаря 2. Три комбобокса 3. 1+2 Я использую третий вариант. Три комбобокса при получении данных из формы работают как один контрол. Есть у меня даже класс для этого. Работает много лет прекрасно во многих проектах, но... не "учебный". Выложу его тут -- меня разорвут в клочья на плохое программирование. Но работает...
я конечно извиняюсь, но - ничего не понял, либо со знаками препинания в посте не разобрался... что есть что? "?" - что означает? "/b" - что означает? квадратные скобки что значат? и "-/" - нипаняяяяятна, что б не нервничал никто - может просто почитать где дадите? или по какому запросу искать хоть? UPD где почитать - уже дали, лезу смотреть. спасибо.
tmanager, у меня немного прощще: формат даты ТОЛЬКО "ДД.ММ.ГГГГ" и никакой другой, у них (конечных пользователей) так и написано (красным и жирным), и именно на это хочу сделать проверку.
PHP: preg_match("/^[0-9]{2}[.][0-9]{2}[.][0-9]{4}$/", $data) Вродь так должно быть. Кстати, пасиба dAllonE - начитался, понял (вродь), запомнил.
Ваши пользователи читают то, что Вы им пишете красным и жирным? Завидую. Тогда всё просто: PHP: <?php if (!preg_match("^/(\d{1,2})\.(\d{1,2})\.(\d{4})$/",trim($date_string),$m)) { //Огорчаешь юзера } else { $mdate=(int)$m[1]; $mon=(int)$m[2]; $year=(int)$m[3]; if(!checkdate ($mon,$mdate,$year)) { //Огорчаешь юзера } } ?>
Всем пасиба, конечный вариант выглядит так: /^[0-9]{2}[.]{1}[0-9]{2}[.]{1}[0-9]{4}$/ (без проверки на 9999 год) Юзерам приходится читать все что красным и жирным, они читают ошибки которые выводятся, в которых написано: "Укажите правильно дату, формат ДД.ММ.ГГГГ", без этого в базу ничего не добавится. А юзеры там не те, которых миллионы на сайте, а юзеры - которые 2-3 человека лазиют по админке и добавляют туда новостишки и прочее.