3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Template { // Path var $path; // Handles var $handles = array(); // Vars var $v = array(); // Set templates path function, use relative, for explample: path('./html'); function SetPath ($path) { if (is_dir($path)) { $this->path = $path . '/'; return true; } else { die ('Template: path is not a relative path to an existent directory'); return false; } } // Loadfile Function; function LoadFile ($h) { if (empty($this->handles[$h])) { die ('Template: no filename specified for "'.$h.'"'); } $str = implode('', file($this->path.$this->handles[$h])); if (empty($str)) { die ('Template: template file ("'.$this->handles[$h].'") is empty'); } return $str; } // Set vars function, for exaple: setvars (array('onevar'=>'onevalue')); function SetVars ($arr) { while (list ($name, $value) = each ($arr)) { $this->v[0][$name] = $value; } return true; } // Set blockvars, for example: setbvars ('block.subblock', array('a'=>'b'); function SetBlockVars ($block, $arr) { if (strstr($block, '.')) { $all = explode ('.', $block); $count = count ($all) -1; $str = '$this->v[1]'; for ($i = 0; $i < $count; $i++) { $str .= '[\''.$all[$i].'\']'; eval ('$last = count ('.$str.') - 1;'); $str .= '['.$last.']'; } $str .= '[\''.$all[$count].'\'][] = $arr;'; eval ($str); } else { $this->v[1][$block][] = $arr; } return true; } // Set handles ( handle (array('name'=>'filename')) function Assign ($str) { $this->handles[$str] = $str.'.tpl'; return true; } // Compile code function compile ($code) { $code = str_replace ('\\', '\\\\', $code); $code = str_replace ('\'', '\\\'', $code); preg_match_all ('#\{([a-z0-9\-_.]+)\.([a-z0-9\-_]+)\}#is', $code, $bvars); $bvarscount = count ($bvars[0]); for ($i = 0; $i < $bvarscount; $i++) { $all = explode ('.', $bvars[1][$i]); $count = count ($all); $str = '$this->v[1]'; for ($ii = 0; $ii < $count; $ii++) { $str .= '[\''.$all[$ii].'\'][$_repeat_'.$all[$ii].']'; } $str .= '[\''.$bvars[2][$i].'\']'; $str = '\' . ( isset ('.$str.') ? '.$str.' : \'\' ) . \''; $replace[] = $str; $search[] = $bvars[0][$i]; } $code = str_replace ($search, $replace, $code); $code = preg_replace('#\{([a-z0-9\-_]*?)\}#is', '\' . ( ( isset($this->v[0][\'\1\']) ) ? $this->v[0][\'\1\'] : \'\' ) . \'', $code); $line = explode ("\n", $code); $lines = count ($line); $names = array (); for ($i = 0; $i < $lines; $i++) { $line[$i] = chop ($line[$i]); if (preg_match('#<!-- BEGIN (.*?) -->#', $line[$i], $temp)) { $blockname = $temp[1]; if (strstr ($blockname, '.')) { $blockarr = explode ('.', $blockname); $blocklen = count ($blockarr) -1; $ref = '$this->v[1]'; for ($x = 0; $x < $blocklen; $x++) { $ref .= '[\''.$blockarr[$x].'\'][$_repeat_'.$blockarr[$x].']'; } $ref .= '[\''.$blockarr[$x].'\']'; $line[$i] = '$_count_'.$blockarr[$x].' = ( isset ('.$ref.') ? count ('.$ref.') : 0);'; $line[$i] .= "\n".'for ($_repeat_'.$blockarr[$x].' = 0; $_repeat_'.$blockarr[$x].' < $_count_'.$blockarr[$x].'; $_repeat_'.$blockarr[$x].'++)'; $line[$i] .= "\n".'{ // BEGIN '.$blockname; } else { $ref = '$this->v[1][\''.$blockname.'\']'; $line[$i] = '$_count_'.$blockname.' = ( isset ('.$ref.') ? count ('.$ref.') : 0);'; $line[$i] .= "\n".'for ($_repeat_'.$blockname.' = 0; $_repeat_'.$blockname.' < $_count_'.$blockname.'; $_repeat_'.$blockname.'++)'; $line[$i] .= "\n".'{ // BEGIN '.$blockname; } } else if (preg_match('#<!-- END (.*?) -->#', $line[$i], $temp)) { $line[$i] = '} // END '.$temp[1]; } else { $line[$i] = 'print \''.$line[$i].'\'."\n";'; } } $code = implode ("\n", $line); return $code; } function Make ($handle) { $template = $this->LoadFile ($handle); $code = $this->compile ($template); eval ($code); /* highlight_string ("<?php\n".$code."\n?>"); */ return true; } } $tpl = new Template; $tpl->SetPath ('html/'); ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/ram1Z
function name:  (null)
number of ops:  7
compiled vars:  !0 = $tpl
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  161     0  E >   NEW                                              $1      'Template'
          1        DO_FCALL                                      0          
          2        ASSIGN                                                   !0, $1
  162     3        INIT_METHOD_CALL                                         !0, 'SetPath'
          4        SEND_VAL_EX                                              'html%2F'
          5        DO_FCALL                                      0          
  163     6      > RETURN                                                   1

Class Template:
Function setpath:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 10
Branch analysis from position: 5
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 10
1 jumps found. (Code = 79) Position 1 = -2
filename:       /in/ram1Z
function name:  SetPath
number of ops:  13
compiled vars:  !0 = $path
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   11     0  E >   RECV                                             !0      
   13     1        INIT_FCALL                                               'is_dir'
          2        SEND_VAR                                                 !0
          3        DO_ICALL                                         $1      
          4      > JMPZ                                                     $1, ->10
   15     5    >   CONCAT                                           ~3      !0, '%2F'
          6        ASSIGN_OBJ                                               'path'
          7        OP_DATA                                                  ~3
   16     8      > RETURN                                                   <true>
          9*       JMP                                                      ->12
   20    10    > > EXIT                                                     'Template%3A+path+is+not+a+relative+path+to+an+existent+directory'
   21    11*       RETURN                                                   <false>
   23    12*     > RETURN                                                   null

End of function setpath

Function loadfile:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 7
Branch analysis from position: 4
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 21, Position 2 = 26
Branch analysis from position: 21
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 26
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/ram1Z
function name:  LoadFile
number of ops:  28
compiled vars:  !0 = $h, !1 = $str
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   26     0  E >   RECV                                             !0      
   28     1        FETCH_OBJ_IS                                     ~2      'handles'
          2        ISSET_ISEMPTY_DIM_OBJ                         1          ~2, !0
          3      > JMPZ                                                     ~3, ->7
   30     4    >   CONCAT                                           ~4      'Template%3A+no+filename+specified+for+%22', !0
          5        CONCAT                                           ~5      ~4, '%22'
          6      > EXIT                                                     ~5
   32     7    >   INIT_FCALL                                               'implode'
          8        SEND_VAL                                                 ''
          9        INIT_FCALL                                               'file'
         10        FETCH_OBJ_R                                      ~6      'path'
         11        FETCH_OBJ_R                                      ~7      'handles'
         12        FETCH_DIM_R                                      ~8      ~7, !0
         13        CONCAT                                           ~9      ~6, ~8
         14        SEND_VAL                                                 ~9
         15        DO_ICALL                                         $10     
         16        SEND_VAR                                                 $10
         17        DO_ICALL                                         $11     
         18        ASSIGN                                                   !1, $11
   34    19        ISSET_ISEMPTY_CV                                         !1
         20      > JMPZ                                                     ~13, ->26
   36    21    >   FETCH_OBJ_R                                      ~14     'handles'
         22        FETCH_DIM_R                                      ~15     ~14, !0
         23        CONCAT                                           ~16     'Template%3A+template+file+%28%22', ~15
         24        CONCAT                                           ~17     ~16, '%22%29+is+empty'
         25      > EXIT                                                     ~17
   38    26    > > RETURN                                                   !1
   39    27*     > RETURN                                                   null

End of function loadfile

Function setvars:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
2 jumps found. (Code = 44) Position 1 = 14, Position 2 = 2
Branch analysis from position: 14
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 2
2 jumps found. (Code = 44) Position 1 = 14, Position 2 = 2
Branch analysis from position: 14
Branch analysis from position: 2
filename:       /in/ram1Z
function name:  SetVars
number of ops:  16
compiled vars:  !0 = $arr, !1 = $name, !2 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   42     0  E >   RECV                                             !0      
   44     1      > JMP                                                      ->6
   46     2    >   FETCH_OBJ_W                                      $3      'v'
          3        FETCH_DIM_W                                      $4      $3, 0
          4        ASSIGN_DIM                                               $4, !1
          5        OP_DATA                                                  !2
   44     6    >   INIT_FCALL_BY_NAME                                       'each'
          7        SEND_VAR_EX                                              !0
          8        DO_FCALL                                      0  $6      
          9        FETCH_LIST_R                                     $7      $6, 0
         10        ASSIGN                                                   !1, $7
         11        FETCH_LIST_R                                     $9      $6, 1
         12        ASSIGN                                                   !2, $9
         13      > JMPNZ                                                    $6, ->2
   48    14    > > RETURN                                                   <true>
   49    15*     > RETURN                                                   null

End of function setvars

Function setblockvars:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 7, Position 2 = 37
Branch analysis from position: 7
1 jumps found. (Code = 42) Position 1 = 29
Branch analysis from position: 29
2 jumps found. (Code = 44) Position 1 = 31, Position 2 = 18
Branch analysis from position: 31
1 jumps found. (Code = 42) Position 1 = 42
Branch analysis from position: 42
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 18
2 jumps found. (Code = 44) Position 1 = 31, Position 2 = 18
Branch analysis from position: 31
Branch analysis from position: 18
Branch analysis from position: 37
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/ram1Z
function name:  SetBlockVars
number of ops:  44
compiled vars:  !0 = $block, !1 = $arr, !2 = $all, !3 = $count, !4 = $str, !5 = $i, !6 = $last
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   52     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   54     2        INIT_FCALL                                               'strstr'
          3        SEND_VAR                                                 !0
          4        SEND_VAL                                                 '.'
          5        DO_ICALL                                         $7      
          6      > JMPZ                                                     $7, ->37
   56     7    >   INIT_FCALL                                               'explode'
          8        SEND_VAL                                                 '.'
          9        SEND_VAR                                                 !0
         10        DO_ICALL                                         $8      
         11        ASSIGN                                                   !2, $8
   57    12        COUNT                                            ~10     !2
         13        SUB                                              ~11     ~10, 1
         14        ASSIGN                                                   !3, ~11
   58    15        ASSIGN                                                   !4, '%24this-%3Ev%5B1%5D'
   59    16        ASSIGN                                                   !5, 0
         17      > JMP                                                      ->29
   61    18    >   FETCH_DIM_R                                      ~15     !2, !5
         19        CONCAT                                           ~16     '%5B%27', ~15
         20        CONCAT                                           ~17     ~16, '%27%5D'
         21        ASSIGN_OP                                     8          !4, ~17
   62    22        CONCAT                                           ~19     '%24last+%3D+count+%28', !4
         23        CONCAT                                           ~20     ~19, '%29+-+1%3B'
         24        INCLUDE_OR_EVAL                                          ~20, EVAL
   63    25        CONCAT                                           ~22     '%5B', !6
         26        CONCAT                                           ~23     ~22, '%5D'
         27        ASSIGN_OP                                     8          !4, ~23
   59    28        PRE_INC                                                  !5
         29    >   IS_SMALLER                                               !5, !3
         30      > JMPNZ                                                    ~26, ->18
   65    31    >   FETCH_DIM_R                                      ~27     !2, !3
         32        CONCAT                                           ~28     '%5B%27', ~27
         33        CONCAT                                           ~29     ~28, '%27%5D%5B%5D+%3D+%24arr%3B'
         34        ASSIGN_OP                                     8          !4, ~29
   66    35        INCLUDE_OR_EVAL                                          !4, EVAL
         36      > JMP                                                      ->42
   70    37    >   FETCH_OBJ_W                                      $32     'v'
         38        FETCH_DIM_W                                      $33     $32, 1
         39        FETCH_DIM_W                                      $34     $33, !0
         40        ASSIGN_DIM                                               $34
         41        OP_DATA                                                  !1
   72    42    > > RETURN                                                   <true>
   73    43*     > RETURN                                                   null

End of function setblockvars

Function assign:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/ram1Z
function name:  Assign
number of ops:  7
compiled vars:  !0 = $str
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   76     0  E >   RECV                                             !0      
   78     1        CONCAT                                           ~3      !0, '.tpl'
          2        FETCH_OBJ_W                                      $1      'handles'
          3        ASSIGN_DIM                                               $1, !0
          4        OP_DATA                                                  ~3
   79     5      > RETURN                                                   <true>
   80     6*     > RETURN                                                   null

End of function assign

Function compile:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 62
Branch analysis from position: 62
2 jumps found. (Code = 44) Position 1 = 64, Position 2 = 23
Branch analysis from position: 64
1 jumps found. (Code = 42) Position 1 = 201
Branch analysis from position: 201
2 jumps found. (Code = 44) Position 1 = 203, Position 2 = 86
Branch analysis from position: 203
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 86
2 jumps found. (Code = 43) Position 1 = 99, Position 2 = 183
Branch analysis from position: 99
2 jumps found. (Code = 43) Position 1 = 106, Position 2 = 158
Branch analysis from position: 106
1 jumps found. (Code = 42) Position 1 = 125
Branch analysis from position: 125
2 jumps found. (Code = 44) Position 1 = 127, Position 2 = 117
Branch analysis from position: 127
1 jumps found. (Code = 42) Position 1 = 182
Branch analysis from position: 182
1 jumps found. (Code = 42) Position 1 = 200
Branch analysis from position: 200
2 jumps found. (Code = 44) Position 1 = 203, Position 2 = 86
Branch analysis from position: 203
Branch analysis from position: 86
Branch analysis from position: 117
2 jumps found. (Code = 44) Position 1 = 127, Position 2 = 117
Branch analysis from position: 127
Branch analysis from position: 117
Branch analysis from position: 158
1 jumps found. (Code = 42) Position 1 = 200
Branch analysis from position: 200
Branch analysis from position: 183
2 jumps found. (Code = 43) Position 1 = 190, Position 2 = 195
Branch analysis from position: 190
1 jumps found. (Code = 42) Position 1 = 200
Branch analysis from position: 200
Branch analysis from position: 195
2 jumps found. (Code = 44) Position 1 = 203, Position 2 = 86
Branch analysis from position: 203
Branch analysis from position: 86
Branch analysis from position: 23
1 jumps found. (Code = 42) Position 1 = 43
Branch analysis from position: 43
2 jumps found. (Code = 44) Position 1 = 45, Position 2 = 35
Branch analysis from position: 45
2 jumps found. (Code = 44) Position 1 = 64, Position 2 = 23
Branch analysis from position: 64
Branch analysis from position: 23
Branch analysis from position: 35
2 jumps found. (Code = 44) Position 1 = 45, Position 2 = 35
Branch analysis from position: 45
Branch analysis from position: 35
filename:       /in/ram1Z
function name:  compile
number of ops:  210
compiled vars:  !0 = $code, !1 = $bvars, !2 = $bvarscount, !3 = $i, !4 = $all, !5 = $count, !6 = $str, !7 = $ii, !8 = $replace, !9 = $search, !10 = $line, !11 = $lines, !12 = $names, !13 = $temp, !14 = $blockname, !15 = $blockarr, !16 = $blocklen, !17 = $ref, !18 = $x
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   83     0  E >   RECV                                             !0      
   85     1        INIT_FCALL                                               'str_replace'
          2        SEND_VAL                                                 '%5C'
          3        SEND_VAL                                                 '%5C%5C'
          4        SEND_VAR                                                 !0
          5        DO_ICALL                                         $19     
          6        ASSIGN                                                   !0, $19
   86     7        INIT_FCALL                                               'str_replace'
          8        SEND_VAL                                                 '%27'
          9        SEND_VAL                                                 '%5C%27'
         10        SEND_VAR                                                 !0
         11        DO_ICALL                                         $21     
         12        ASSIGN                                                   !0, $21
   88    13        INIT_FCALL                                               'preg_match_all'
         14        SEND_VAL                                                 '%23%5C%7B%28%5Ba-z0-9%5C-_.%5D%2B%29%5C.%28%5Ba-z0-9%5C-_%5D%2B%29%5C%7D%23is'
         15        SEND_VAR                                                 !0
         16        SEND_REF                                                 !1
         17        DO_ICALL                                                 
   89    18        FETCH_DIM_R                                      ~24     !1, 0
         19        COUNT                                            ~25     ~24
         20        ASSIGN                                                   !2, ~25
   90    21        ASSIGN                                                   !3, 0
         22      > JMP                                                      ->62
   92    23    >   INIT_FCALL                                               'explode'
         24        SEND_VAL                                                 '.'
         25        FETCH_DIM_R                                      ~28     !1, 1
         26        FETCH_DIM_R                                      ~29     ~28, !3
         27        SEND_VAL                                                 ~29
         28        DO_ICALL                                         $30     
         29        ASSIGN                                                   !4, $30
   93    30        COUNT                                            ~32     !4
         31        ASSIGN                                                   !5, ~32
   94    32        ASSIGN                                                   !6, '%24this-%3Ev%5B1%5D'
   95    33        ASSIGN                                                   !7, 0
         34      > JMP                                                      ->43
   97    35    >   FETCH_DIM_R                                      ~36     !4, !7
         36        CONCAT                                           ~37     '%5B%27', ~36
         37        CONCAT                                           ~38     ~37, '%27%5D%5B%24_repeat_'
         38        FETCH_DIM_R                                      ~39     !4, !7
         39        CONCAT                                           ~40     ~38, ~39
         40        CONCAT                                           ~41     ~40, '%5D'
         41        ASSIGN_OP                                     8          !6, ~41
   95    42        PRE_INC                                                  !7
         43    >   IS_SMALLER                                               !7, !5
         44      > JMPNZ                                                    ~44, ->35
   99    45    >   FETCH_DIM_R                                      ~45     !1, 2
         46        FETCH_DIM_R                                      ~46     ~45, !3
         47        CONCAT                                           ~47     '%5B%27', ~46
         48        CONCAT                                           ~48     ~47, '%27%5D'
         49        ASSIGN_OP                                     8          !6, ~48
  100    50        CONCAT                                           ~50     '%27+.+%28+isset+%28', !6
         51        CONCAT                                           ~51     ~50, '%29+%3F+'
         52        CONCAT                                           ~52     ~51, !6
         53        CONCAT                                           ~53     ~52, '+%3A+%27%27+%29+.+%27'
         54        ASSIGN                                                   !6, ~53
  101    55        ASSIGN_DIM                                               !8
         56        OP_DATA                                                  !6
  102    57        FETCH_DIM_R                                      ~57     !1, 0
         58        FETCH_DIM_R                                      ~58     ~57, !3
         59        ASSIGN_DIM                                               !9
         60        OP_DATA                                                  ~58
   90    61        PRE_INC                                                  !3
         62    >   IS_SMALLER                                               !3, !2
         63      > JMPNZ                                                    ~60, ->23
  104    64    >   INIT_FCALL                                               'str_replace'
         65        SEND_VAR                                                 !9
         66        SEND_VAR                                                 !8
         67        SEND_VAR                                                 !0
         68        DO_ICALL                                         $61     
         69        ASSIGN                                                   !0, $61
  105    70        INIT_FCALL                                               'preg_replace'
         71        SEND_VAL                                                 '%23%5C%7B%28%5Ba-z0-9%5C-_%5D%2A%3F%29%5C%7D%23is'
         72        SEND_VAL                                                 '%27+.+%28+%28+isset%28%24this-%3Ev%5B0%5D%5B%27%5C1%27%5D%29+%29+%3F+%24this-%3Ev%5B0%5D%5B%27%5C1%27%5D+%3A+%27%27+%29+.+%27'
         73        SEND_VAR                                                 !0
         74        DO_ICALL                                         $63     
         75        ASSIGN                                                   !0, $63
  107    76        INIT_FCALL                                               'explode'
         77        SEND_VAL                                                 '%0A'
         78        SEND_VAR                                                 !0
         79        DO_ICALL                                         $65     
         80        ASSIGN                                                   !10, $65
  108    81        COUNT                                            ~67     !10
         82        ASSIGN                                                   !11, ~67
  109    83        ASSIGN                                                   !12, <array>
  111    84        ASSIGN                                                   !3, 0
         85      > JMP                                                      ->201
  113    86    >   INIT_FCALL                                               'chop'
         87        FETCH_DIM_R                                      ~72     !10, !3
         88        SEND_VAL                                                 ~72
         89        DO_ICALL                                         $73     
         90        ASSIGN_DIM                                               !10, !3
         91        OP_DATA                                                  $73
  114    92        INIT_FCALL                                               'preg_match'
         93        SEND_VAL                                                 '%23%3C%21--+BEGIN+%28.%2A%3F%29+--%3E%23'
         94        FETCH_DIM_R                                      ~74     !10, !3
         95        SEND_VAL                                                 ~74
         96        SEND_REF                                                 !13
         97        DO_ICALL                                         $75     
         98      > JMPZ                                                     $75, ->183
  116    99    >   FETCH_DIM_R                                      ~76     !13, 1
        100        ASSIGN                                                   !14, ~76
  117   101        INIT_FCALL                                               'strstr'
        102        SEND_VAR                                                 !14
        103        SEND_VAL                                                 '.'
        104        DO_ICALL                                         $78     
        105      > JMPZ                                                     $78, ->158
  119   106    >   INIT_FCALL                                               'explode'
        107        SEND_VAL                                                 '.'
        108        SEND_VAR                                                 !14
        109        DO_ICALL                                         $79     
        110        ASSIGN                                                   !15, $79
  120   111        COUNT                                            ~81     !15
        112        SUB                                              ~82     ~81, 1
        113        ASSIGN                                                   !16, ~82
  121   114        ASSIGN                                                   !17, '%24this-%3Ev%5B1%5D'
  122   115        ASSIGN                                                   !18, 0
        116      > JMP                                                      ->125
  124   117    >   FETCH_DIM_R                                      ~86     !15, !18
        118        CONCAT                                           ~87     '%5B%27', ~86
        119        CONCAT                                           ~88     ~87, '%27%5D%5B%24_repeat_'
        120        FETCH_DIM_R                                      ~89     !15, !18
        121        CONCAT                                           ~90     ~88, ~89
        122        CONCAT                                           ~91     ~90, '%5D'
        123        ASSIGN_OP                                     8          !17, ~91
  122   124        PRE_INC                                                  !18
        125    >   IS_SMALLER                                               !18, !16
        126      > JMPNZ                                                    ~94, ->117
  126   127    >   FETCH_DIM_R                                      ~95     !15, !18
        128        CONCAT                                           ~96     '%5B%27', ~95
        129        CONCAT                                           ~97     ~96, '%27%5D'
        130        ASSIGN_OP                                     8          !17, ~97
  127   131        FETCH_DIM_R                                      ~100    !15, !18
        132        CONCAT                                           ~101    '%24_count_', ~100
        133        CONCAT                                           ~102    ~101, '+%3D+%28+isset+%28'
        134        CONCAT                                           ~103    ~102, !17
        135        CONCAT                                           ~104    ~103, '%29+%3F+count+%28'
        136        CONCAT                                           ~105    ~104, !17
        137        CONCAT                                           ~106    ~105, '%29+%3A+0%29%3B'
        138        ASSIGN_DIM                                               !10, !3
        139        OP_DATA                                                  ~106
  128   140        FETCH_DIM_R                                      ~108    !15, !18
        141        CONCAT                                           ~109    '%0Afor+%28%24_repeat_', ~108
        142        CONCAT                                           ~110    ~109, '+%3D+0%3B+%24_repeat_'
        143        FETCH_DIM_R                                      ~111    !15, !18
        144        CONCAT                                           ~112    ~110, ~111
        145        CONCAT                                           ~113    ~112, '+%3C+%24_count_'
        146        FETCH_DIM_R                                      ~114    !15, !18
        147        CONCAT                                           ~115    ~113, ~114
        148        CONCAT                                           ~116    ~115, '%3B+%24_repeat_'
        149        FETCH_DIM_R                                      ~117    !15, !18
        150        CONCAT                                           ~118    ~116, ~117
        151        CONCAT                                           ~119    ~118, '%2B%2B%29'
        152        ASSIGN_DIM_OP                .=               8          !10, !3
        153        OP_DATA                                                  ~119
  129   154        CONCAT                                           ~121    '%0A%7B+%2F%2F+BEGIN+', !14
        155        ASSIGN_DIM_OP                .=               8          !10, !3
        156        OP_DATA                                                  ~121
        157      > JMP                                                      ->182
  133   158    >   CONCAT                                           ~122    '%24this-%3Ev%5B1%5D%5B%27', !14
        159        CONCAT                                           ~123    ~122, '%27%5D'
        160        ASSIGN                                                   !17, ~123
  134   161        CONCAT                                           ~126    '%24_count_', !14
        162        CONCAT                                           ~127    ~126, '+%3D+%28+isset+%28'
        163        CONCAT                                           ~128    ~127, !17
        164        CONCAT                                           ~129    ~128, '%29+%3F+count+%28'
        165        CONCAT                                           ~130    ~129, !17
        166        CONCAT                                           ~131    ~130, '%29+%3A+0%29%3B'
        167        ASSIGN_DIM                                               !10, !3
        168        OP_DATA                                                  ~131
  135   169        CONCAT                                           ~133    '%0Afor+%28%24_repeat_', !14
        170        CONCAT                                           ~134    ~133, '+%3D+0%3B+%24_repeat_'
        171        CONCAT                                           ~135    ~134, !14
        172        CONCAT                                           ~136    ~135, '+%3C+%24_count_'
        173        CONCAT                                           ~137    ~136, !14
        174        CONCAT                                           ~138    ~137, '%3B+%24_repeat_'
        175        CONCAT                                           ~139    ~138, !14
        176        CONCAT                                           ~140    ~139, '%2B%2B%29'
        177        ASSIGN_DIM_OP                .=               8          !10, !3
        178        OP_DATA                                                  ~140
  136   179        CONCAT                                           ~142    '%0A%7B+%2F%2F+BEGIN+', !14
        180        ASSIGN_DIM_OP                .=               8          !10, !3
        181        OP_DATA                                                  ~142
        182    > > JMP                                                      ->200
  139   183    >   INIT_FCALL                                               'preg_match'
        184        SEND_VAL                                                 '%23%3C%21--+END+%28.%2A%3F%29+--%3E%23'
        185        FETCH_DIM_R                                      ~143    !10, !3
        186        SEND_VAL                                  

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
164.8 ms | 1428 KiB | 33 Q