parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

там немного сложнее

AK666 12.05.2021 14:32

пример:
__flash|a:1:{s:9:"emailsent";i:-1;}__id|i:27;__expire|i:1620831074;permissions|a
:1:{s:6:"mode";s:32:"E6B0BB3793B311E982A8545200E58E4C";}emailsent|s:21:"your e
-mail sent well";
еслиб они ВСЕ переменньіе разделяли через ";" вопросов бьіб не бьіло, но тут смешанное
тобто тип "а" заканчивается на ";}" или "{}" если пуст, тип стринг на `";`
у некоторьіх типов - есть размерность, у некоторьіх - нет.

на коленке накидал simplecode ) (мне, на самом деле надо только __id и __expire вьітягивать, потому с object, array, reference - не заморачивался
  $lResult[^hash::create[]]

  ^if(-f "${phpPath}/sess_${PHPSESSID}"){
    $f[^file::load[binary;${phpPath}/sess_${PHPSESSID}]] 
    ^if($f.size >0){
      $session[$f.text]
      ^while(^session.length[] >0 && ^session.pos[|]>-1){
        $variable[^session.mid(0;^session.pos[|])]
        $lResult.$variable[^hash::create[]]
        $session[^session.mid(^session.pos[|]+1)]

        $lResult.$variable.type[^session.mid(0;^session.pos[:])]
        $session[^session.mid(^session.pos[:]+1)]

        ^switch[$lResult.$variable.type]{
          ^case[s;S]{
              $lResult.$variable.size[^session.mid(0;^session.pos[:])]
              $session[^session.mid(^session.pos[:]+1)]

              $lResult.$variable.value[^session.mid(1;^session.pos["^;]-1)]
              $session[^session.mid(^session.pos["^;]+2)]
          }
          ^case[a;O;C;r;R]{
              $lResult.$variable.size[^session.mid(0;^session.pos[:])]
              $session[^session.mid(^session.pos[:]+1)]

              ^if(^session.mid(0;2) eq "{}"){
                $lResult.$variable.value[^session.mid(0;2)]
                $session[^session.mid(2)]
              }{
                $lResult.$variable.value[^session.mid(0;^session.pos[^;}]+2)]
                $session[^session.mid(^session.pos[^;}]+2)]
              }
          }
          ^case[DEFAULT]{
              $lResult.$variable.value[^session.mid(0;^session.pos[^;])]
              $session[^session.mid(^session.pos[^;]+1)]
          }
        }
      }
    }
  }


  $result[$lResult]