За последние 24 часа нас посетили 22483 программиста и 1200 роботов. Сейчас ищут 717 программистов ...

snmp oid матчить/вырезать по куску

Тема в разделе "Регулярные выражения", создана пользователем NewUse, 19 июл 2018.

  1. NewUse

    NewUse Новичок

    С нами с:
    14 июл 2018
    Сообщения:
    46
    Симпатии:
    0
    Дан ассоциативный массив $tree:
    Код (Text):
    1. array(50) {....
    2. [".1.3.6.1.2.1.4.20.1.1.192.168.1.2"]=> string(10) "192.168.1.2"
    3. [".1.3.6.1.2.1.4.20.1.1.192.168.1.3"]=> string(10) "192.168.1.3"
    4. [".1.3.6.1.2.1.4.20.1.2.192.168.1.2"]=> string(2) "16"
    5. [".1.3.6.1.2.1.4.20.1.2.192.168.1.3"]=> string(2) "17"
    6. [".1.3.6.1.2.1.4.20.1.3.192.168.1.2"]=> string(13) "255.255.255.0"
    7. [".1.3.6.1.2.1.4.20.1.3.192.168.1.3"]=> string(13) "255.255.255.0"
    8. ...}
    нужно проверить, матчится ли oid на .1.3.6.1.2.1.4.20.1.*
    пытаюсь так:
    PHP:
    1. foreach($tree as $a => $v) {
    2.         $value = $v;
    3.         if  (preg_match('/\.1\.3\.6\.1\.2\.1\.4\.20\.1\.\d{1,2}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\..{1,}$/i',$a)) {

    Не матчится, где ошибся, подскажите, плз, 192.168.1.* -- IP-адреса
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @NewUse, для чего в шаблоне между последним "блоком для до-трех-цифр" и "концом-строки" блок "\..{1,}"?
     
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1. $test = (strpos($str, ".1.3.6.1.2.1.4.20.1.") !== false) ? "true" : "false";
     
  4. NewUse

    NewUse Новичок

    С нами с:
    14 июл 2018
    Сообщения:
    46
    Симпатии:
    0
    любое количество любых символов потребуется в дальнейшем, да, спасибо, в этом была проблема, там была концовка, а требовался хотяб 1 символ.
     
  5. NewUse

    NewUse Новичок

    С нами с:
    14 июл 2018
    Сообщения:
    46
    Симпатии:
    0
    Подскажите пожалуйста, можно ли в php regexp-ом вытаскивать из строки в две переменные?
    пока делаю так:
    $index=preg_replace('/\.1\.3\.6\.1\.4\.1\.41112\.1\.4\.7\.1\.(\d{1,2})\.1\.(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/i','$2',$a);
    $key=preg_replace('/\.1\.3\.6\.1\.4\.1\.41112\.1\.4\.7\.1\.(\d{1,2})\.1\.(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/i','$1',$a);
    Но тут получается двойная обработка одного и того же, как бы её избежать, что-то не нашёл подходящей функции...
     
  6. NewUse

    NewUse Новичок

    С нами с:
    14 июл 2018
    Сообщения:
    46
    Симпатии:
    0