ip адрес в regex

Тема в разделе "Программирование / Скриптинг", создана пользователем R1KO, 7 июн 2013.

  1. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.976
    Здравствуйте. Хочу решить проблему с написанием в чат ip серверов через пробел.


    PHP:
    ip_serv CompileRegex("\\d+\\.\\d+\\.\\d+\\.\\d+(:\\d+)?");
    Блокируется:
    Не блокируется:
    Блокируется:
    Тоесть если в самом ip адресе есть пробел(ы) то уже не блокируется. Есть идеи как исправить ?
     
  2. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Забкй на это :D Всем явно будет влом копировать такие адреса... Я иногда просто пост-фактум ищу по таблице чата хлстатс по ":27" или ":28" и баню...
    Зато это может внести много глюков - лучше конкретно задать цифры длиной 1-3 (или конкретно 0-255), или можно в принципе отслеживать ":27***" и ":28***"...
    Хотя может есть более верный способ с очень маленькими ложными срабатываниями... Поэтому в приципе присоединюсь - есть у кого-либо более точные методы определения?
     
  3. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.976
    KorDen, ну строка
    самая примитивная.

    А такую не компилирует
     
    Последнее редактирование: 7 июн 2013
  4. wanted241

    wanted241 Real-Gamer.Ru

    Сообщения:
    783
    Симпатии:
    355
    Попробуй вместо 1ого \, сделать 2.
     
  5. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Попробуй просто искать :27 и :28, если найдет, блокируй чат
     
  6. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    Угу, а содержимое записывать в лог и потом смотреть на заблоченное :)
    А еще лучше сразу передавать на скрипт, который будет сканить инфу о сервере и возможно еще что-либо веселое делать :secret:
     
  7. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Лень делать больше проверок, может быть потом
    PHP:
    #include <sourcemod>

    public OnPluginStart() 
    {
        new 
    String:test[][] = {    "1.2.3.4:27015",
                                    
    "132.321.123.123:27015",
                                    
    "94.55.22.48:27401",
                                    
    "prosto stroka",
                                    
    "sam125.8.4.8.54:2b shoke578"};

        new 
    size sizeof(test);

        for (new 
    0size++)
        {
            
    PrintToServer("STRING: %s    :    %s"test[i], FunctionCheckString(test[i]) ? "IP" "NO");
        }
    }

    bool:FunctionCheckString(const String:text[])
    {
        new 
    len strlen(text);

        new 
    CountNumeric    0,
            
    CountDot            0,
            
    CountColon        0;

        for (new 
    0leni++)
        {
            if (
    IsCharNumeric(text[i]))
            {
                
    CountNumeric++;
            }
            else
            {
                if (
    text[i] == '.')
                {
                    
    CountDot++;
                }
                else
                {
                    if (
    text[i] == ':')
                    {
                        
    CountColon++;
                    }
                }
            }
        }

        return (
    CountNumeric && CountDot && CountColon 0) ? true false;
    }
     
  8. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.549
    Симпатии:
    1.141
    R1KO нравится это.
  9. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.976
    Серый™, кажись работает. Щас проверю наверняка. По краней мере здесь нормально.
     
    Последнее редактирование: 8 июн 2013