
Ну вот такой ответ был бы по-человечески.@Фанат, я честно потратил два часа на написание такого парсера.
На каждом шаге у меня появлялось больше и больше вопросов.
!
! OpenBSC (UNKNOWN) configuration saved from vty
!!
password foo
!
log stderr
  logging filter all 1
  logging color 1
  logging print category 0
  logging timestamp 0
  logging level all everything
  logging level rll everything
  logging level cc everything
  logging level mm everything
  logging level rr everything
  logging level rsl everything
  logging level nm everything
  logging level mncc notice
  logging level pag notice
  logging level meas notice
  logging level sccp notice
  logging level msc notice
  logging level mgcp notice
  logging level ho notice
  logging level db notice
  logging level ref notice
  logging level gprs debug
  logging level ns info
  logging level bssgp debug
  logging level llc debug
  logging level sndcp debug
  logging level nat notice
  logging level ctrl notice
  logging level smpp debug
  logging level filter debug
  logging level lglobal notice
  logging level llapd notice
  logging level linp notice
  logging level lmux notice
  logging level lmi notice
  logging level lmib notice
  logging level lsms notice
  logging level lctrl notice
  logging level lgtp notice
!
line vty
 no login
!
e1_input
 e1_line 0 driver ipa
 e1_line 0 port 0
 no e1_line 0 keepalive
network
 network country code 250
 mobile network code 77
 short name AYtest
 long name AYtest
 auth policy accept-all
 location updating reject cause 13
 encryption a5 1
 neci 1
 paging any use tch 0
 rrlp mode none
 mm info 1
 handover 0
 handover window rxlev averaging 10
 handover window rxqual averaging 1
 handover window rxlev neighbor averaging 10
 handover power budget interval 6
 handover power budget hysteresis 3
 handover maximum distance 9999
 timer t3101 10
 timer t3103 0
 timer t3105 0
 timer t3107 0
 timer t3109 4
 timer t3111 0
 timer t3113 60
 timer t3115 0
 timer t3117 0
 timer t3119 0
 timer t3122 10
 timer t3141 0
 dtx-used 0
 subscriber-keep-in-ram 0
 extension-prefix 0
 bts 0
  type sysmobts
  band GSM900
  cell_identity 0
  location_area_code 1
  base_station_id_code 63
  ms max power 10
  cell reselection hysteresis 4
  rxlev access min 0
  periodic location update 30
  radio-link-timeout 32
  channel allocator ascending
  rach tx integer 9
  rach max transmission 7
  channel-descrption attach 1
  channel-descrption bs-pa-mfrms 5
  channel-descrption bs-ag-blks-res 1
  ip.access unit_id 1801 0
  oml ip.access stream_id 255 line 0
  neighbor-list mode automatic
  codec-support fr
  gprs mode none
  no force-combined-si
  trx 0
   rf_locked 0
   arfcn 990
   nominal power 35
   max_power_red 14
   rsl e1 tei 0
    timeslot 0
     phys_chan_config CCCH+SDCCH4
     hopping enabled 0
    timeslot 1
     phys_chan_config SDCCH8
     hopping enabled 0
    timeslot 2
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 3
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 4
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 5
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 6
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 7
     phys_chan_config TCH/F
     hopping enabled 0
  trx 1
   rf_locked 0
   arfcn 980
   nominal power 35
   max_power_red 14
   rsl e1 tei 0
    timeslot 0
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 1
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 2
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 3
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 4
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 5
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 6
     phys_chan_config TCH/F
     hopping enabled 0
    timeslot 7
     phys_chan_config TCH/F
     hopping enabled 0
mncc-int
nitb
 subscriber-create-on-demand
smpp
 local-tcp-port 2775
 policy closed
 no smpp-first$rows = file($filename)  - вернет массив строк.
$level=0;
$root = new ArrayObject();
$root->parent = NULL;
$root->children=[];
foreach($rows as $r)
  проверка на то, что $r не надо пропустить
  $new_level = (int)strspn($r,' '); - считает отступы
  if ($new_level>$level) {
  пусть на следующей строке может больше быть только на 1 пробел,
  иначе в $root надо записывать количество, а при выходе наверх учитывать это
    $child = new ArrayObject();
    $child->parent = $root;
    $root->children[] = $child;
    $root = $child;
    $level=$new_level;
  }elseif($new_level<$level){
      for($level - $new_level)
         if ($root->parent !== NULL)  ...
              $root =$root->parent;  - возврат на нужный уровень
      $level=$new_level;
   }
   // если уровень тот же - просто добавляем лист в узел
   $root[] = explode(trim($r),''); -- вероятно, нужен другой парсер строки формата "key value"
}
дальше надо отформатировать вывод $root в нужном форматеЭто называется морочить людям голову.исходный конфиг я упростил
Вы обиделись?)Это называется морочить людям голову.
Да при чем здесь обиделся. Эта реплика совсем мимо кассы.Вы обиделись?)
Я всегда прихожу в восторг от таких фраз ) Две с половиной недели парсить конфиг....Две с половиной недели ушло на топорное решение, многовато, конечно.
Приятно, что вас так легко привести в восторг)Я всегда прихожу в восторг от таких фраз ) Две с половиной недели парсить конфиг....
Вот какой смысл спорить с человеком, который заранее заявил, что никаких аргументов не примет и вообще всё лучше тебя знает?…соглашусь, . Но это не так)
Вы получаете какое-то сомнительное удовольствие от общения в этой ветке, дорогой @AnrDaemon ? Зачем вы тратите свое время?Вот какой смысл спорить с человеком, который заранее заявил, что никаких аргументов не примет и вообще всё лучше тебя знает?…
Вот опять. Какой смысл отвечать на вопрос, когда вы уже приняли решение и явно не собираетесь его менять?…Вы получаете какое-то сомнительное удовольствие
Вот опять. Какой смысл отвечать на вопрос, когда вы уже приняли решение и явно не собираетесь его менять?…
да, учебный материал первого курса в интернете обсуждают редко - его знают почти всеесли бы кто-нибудь скинул пример дерева. В инете с этим туговато. Спасибо за код.
