Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка формата даты
 
 автор: victoor   (04.09.2006 в 20:25)   письмо автору
 
 

есть скрипт (его НЕ надо переделывать)
<?php
  $string
="2006-08-08";    #тут любая дата в таком формате ГГГГ-ММ-ДД
  
$str="тут_регулярка";
  if(
preg_match($str$string))
  {
     echo(
'Сторка составлено неверно!<br>');
  }
  else
  {
     echo(
'Строка составлена верно!<br>');
  }
?>

Как сделать, чтобы он проверял, правильно ли составлена строка для даты, которая идет в формате ГГГГ-ММ-ДД.
Для проверки правильность ввода ника (буквы, цифры, спец.знаки) было в этом же скрипте использовано выражение '/[^a-zа-яё0-9-_~@\!\^\(\)\.\d]+/i' и все работало как надо.

   
 
 автор: cheops   (04.09.2006 в 22:40)   письмо автору
 
   для: victoor   (04.09.2006 в 20:25)
 

Можно поступить следующим образом
<?php 
  $string
="2006-08-08";    #тут любая дата в таком формате ГГГГ-ММ-ДД 
  
$str="|^[\d]{4}-[\d]{2}-[\d]{2}$|"
  if(
preg_match($str$string)) 
  { 
     echo(
'Сторка составлено неверно!<br>'); 
  } 
  else 
  { 
     echo(
'Строка составлена верно!<br>'); 
  } 
?>

   
 
 автор: victoor   (04.09.2006 в 23:07)   письмо автору
 
   для: cheops   (04.09.2006 в 22:40)
 

неподходит... :-(
не по той ветке идет...
Надо, чтобы по ветке true шло, когда строка составлена НЕПРАВЕЛЬНО, а по ветке folse, когда строка составлена ПРАВИЛЬНО.

   
 
 автор: cheops   (04.09.2006 в 23:23)   письмо автору
 
   для: victoor   (04.09.2006 в 23:07)
 

А, вон у вас как текст расположен, тогда нужно добавить отрицание
<?php  
  $string
="2006-08-08";    #тут любая дата в таком формате ГГГГ-ММ-ДД  
  
$str="|^[\d]{4}-[\d]{2}-[\d]{2}$|";  
  if(!
preg_match($str$string))  
  {  
     echo(
'Сторка составлено неверно!<br>');  
  }  
  else  
  {  
     echo(
'Строка составлена верно!<br>');  
  }  
?>

   
 
 автор: victoor   (04.09.2006 в 23:36)   письмо автору
 
   для: cheops   (04.09.2006 в 23:23)
 

не, так тоже не подходит, т.к. для проверки ника с регуляркой /[^a-zа-я;ё0-9-_~@\!\^\(\)\.\d]+/i
работает без отрицания.
Или надо и эту регулярку исправить... а как тогда?

   
 
 автор: kasmanaft   (05.09.2006 в 12:29)   письмо автору
 
   для: victoor   (04.09.2006 в 23:36)
 

Какую, причем тут ник?

   
 
 автор: victoor   (05.09.2006 в 12:56)   письмо автору
 
   для: kasmanaft   (05.09.2006 в 12:29)
 

есть функция у меня, ее код вы видите на 3 поста выше. Она используется для проверки коректности введенных данных, все отличие в регулярке, которая ей передается. Для проверки ника она работает (используется рег. выражение '/[^a-zа-я;ё0-9-_~@\!\^\(\)\.\d]+/i'). Теперь надо сделать так, чтобы она работала и для проверки даты в формате ГГГГ-ММ-ДД

   
 
 автор: ec_stasis   (05.09.2006 в 16:07)   письмо автору
 
   для: victoor   (04.09.2006 в 23:36)
 

вот так попробуй исправить

/^[a-zа-я;ё0-9-_~@\!\^\(\)\.\d]+$/i

будет работать с отрицанием.
а вообще неверно построена твоя функция. Логичнее было бы поменять местами
echo('Сторка составлено неверно!<br>');
и
echo('Сторка составлено верно!<br>');

   
 
 автор: victoor   (05.09.2006 в 20:07)   письмо автору
 
   для: ec_stasis   (05.09.2006 в 16:07)
 

>вот так попробуй исправить
Спасибо, так заработало.

>а вообще неверно построена твоя функция. Логичнее было бы поменять местами
> echo('Сторка составлено неверно!<br>');

> echo('Сторка составлено верно!<br>');
ну вообще я вначале планировал это как функцию поиска запрещенных символов, т.е. найдены запрещенные символы (неправильная строка) или ненайдены запрещенные символы (разрешенная строка)
поэтому так ветви и расположены, а потом лень было править, к тому же я не знал, как исправить регулярку.

Еще раз спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования