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

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

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

 

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

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

тема: Проверка ввода IP-адреса!
 
 автор: Vados   (23.08.2006 в 16:14)   письмо автору
 
 

Всем привет!
Вот столкнулся с регулярными выражениями и необходимо, чтобы выражение проверяло вводимость только цифр и точки и заменяло к примеру запятые на точки.
То есть необходимо, чтобы пользователь вводил правильный IP-адрес.
Вот что у меня получилось:

if (ereg("^ ([0-9]{3})([0-9]{2|3})([0-9]{2|3})([0-9]{2|3})?$", $_POST['ip1']))
  {
      links ("<b class=text>Введены допустимые символы в IP адресе</b>");
  }    
      else 
      {
          links ("<b class=text>Введены недопустимые символы в IP адресе</b>");
      }

Но у меня при проверке пишет, что Введены недопустимые символы в IP адресе

Помогите пожалуйста!
Заранее спасибо!

   
 
 автор: cheops   (23.08.2006 в 16:54)   письмо автору
 
   для: Vados   (23.08.2006 в 16:14)
 

Хм... так у вас точки нигде не фигурируют... кроме того, после ^ идёт пробел - он тоже становится обязательным, т.е. если вначале не будет пробела - регулярные выражения будут сообщать о недопустимых символах. Можно поступить так
<?php 
  $_POST
['ip1'] = "127.0.0.1";
  if (
ereg("^|[0-9]{1,3})\.[0-9]{1,3})\.[0-9]{1,3})\.[0-9]{1,3})|$"$_POST['ip1'])) 
  { 
    exit (
"<b class=text>Введены допустимые символы в IP адресе</b>"); 
  }     
  else  
  { 
    exit (
"<b class=text>Введены недопустимые символы в IP адресе</b>"); 
  }
?>

   
 
 автор: Vados   (23.08.2006 в 17:19)   письмо автору
 
   для: cheops   (23.08.2006 в 16:54)
 

Но данная комбинация не работает!
У меня, даже, если я не ввожу никакого числа пишет, что Введены допустимые символы в IP адресе!
Как с этим бороться?
Спасибо!

   
 
 автор: kasmanaft   (23.08.2006 в 18:06)   письмо автору
 
   для: Vados   (23.08.2006 в 17:19)
 

Скобки какие-то проскачили ... Можно вот так, работает - проверил :)

  if (ereg("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$", $_POST['ip1']))

   
 
 автор: Саня   (24.08.2006 в 19:58)   письмо автору
 
   для: kasmanaft   (23.08.2006 в 18:06)
 

999.999.999.999 пройдёт

Можно сделать проверку одним монструозным выражением (взято из Фридла):
^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.
([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$


Но проще разбить проверку на этапы и проверять каждое число по отдельности.

   
Rambler's Top100
вверх

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