Помогите отфильтровать IP

Тема в разделе "Регулярные выражения", создана пользователем MaximM, 18 май 2011.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. MaximM

    MaximM Постоялец

    Регистр.:
    25 сен 2007
    Сообщения:
    128
    Симпатии:
    17
    Здравствуйте, есть проверка IP в условии на PHP:
    PHP:
    $user_ip=$REMOTE_ADDR;  

    $se_ip="127.128.129.";  

    $ip=ereg("($se_ip)([1-255])"$user_ip$regs);  

    if(
    $ip) print "попал";  
    else print 
    "не попал";  
    то есть с помощью укуп проверяется входит ли IP адрес в диапазон
    127.128.129.1 - 127.128.129.255

    Просьба помочь доделать выражение ereg? которое в примере
    на такое, чтобы проверялся, входит ли Ip адрес в диапазон
    127.128.1.1 - 127.128.255.255 (не меняется 127.128. а последние 2 цифры меняются)
    То есть чтобы 2 последние цифры в диапазоне 1-255 были
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    лучше использовать прег
    PHP:
    $se_ip="127\.128\.";   

    $ip=preg_match("~^($se_ip)([1-255]+)\.([1-255]+)$~"$user_ip$regs);   

    if(
    $ip) print "попал";   
    else print 
    "не попал"
    хотя, при такой постановке вопроса, достаточно просто найти в начале ип начало нужного диапазона
    PHP:
    $se_ip="127.128.";  
    if(
    strpos($user_ip$se_ip)===0){
         print 
    "попал";   
    }else{
         print 
    "не попал"
        
    }
     
    MaximM нравится это.
  3. MaximM

    MaximM Постоялец

    Регистр.:
    25 сен 2007
    Сообщения:
    128
    Симпатии:
    17
    А этот прег точно раьботает?
    а то у меня переменная $ip всегда почему то принимает значение 0
    даже если IP совпадает
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    да) извиняюсь- в скобках задаётся диапазон символов, те [1-255] - это значит все символы начиная с 1 до 2, включая 5.
    Вот нормально должна работать
    PHP:
    "~^($se_ip)(\d{1,3})\.(\d{1,3})$~"
     
    MaximM нравится это.
Статус темы:
Закрыта.