3v4l.org

run code in 300+ PHP versions simultaneously
<?php function fix($value) { $result = ''; if ($value[0] === "'" || strpos($value, '$') === false) { $result = eval("return @$value;"); } else { $value = substr($value, 1, -1); while (($p = strpos($value, '\\')) !== false) { if (!isset($value[$p + 1])) { break; } if ($p > 0) { $result .= substr($value, 0, $p); } $value = substr($value, $p + 1); $p = strpos($value, '$'); if ($p === false) { $result .= eval('return "\\'.$value.'";'); $value = ''; break; } if ($p === 0) { $result .= '$'; $value = substr($value, 1); } else { $result .= eval('return "\\'.substr($value, 0, $p).'";'); $value = substr($value, $p); } } $result .= $value; } return $result; } echo fix('\'DATE \a\t TIME\''), "\n", fix('"FIELD\tFIELD"');
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/tQgip
function name:  (null)
number of ops:  10
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   39     0  E >   INIT_FCALL                                               'fix'
          1        SEND_VAL                                                 '%27DATE+%5Ca%5Ct+TIME%27'
          2        DO_FCALL                                      0  $0      
          3        ECHO                                                     $0
          4        ECHO                                                     '%0A'
          5        INIT_FCALL                                               'fix'
          6        SEND_VAL                                                 '%22FIELD%5CtFIELD%22'
          7        DO_FCALL                                      0  $1      
          8        ECHO                                                     $1
          9      > RETURN                                                   1

Function fix:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 47) Position 1 = 5, Position 2 = 11
Branch analysis from position: 5
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 18
Branch analysis from position: 12
1 jumps found. (Code = 42) Position 1 = 88
Branch analysis from position: 88
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 18
1 jumps found. (Code = 42) Position 1 = 80
Branch analysis from position: 80
2 jumps found. (Code = 44) Position 1 = 87, Position 2 = 25
Branch analysis from position: 87
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 25
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 30
Branch analysis from position: 29
1 jumps found. (Code = 42) Position 1 = 87
Branch analysis from position: 87
Branch analysis from position: 30
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 38
Branch analysis from position: 32
2 jumps found. (Code = 43) Position 1 = 51, Position 2 = 57
Branch analysis from position: 51
1 jumps found. (Code = 42) Position 1 = 87
Branch analysis from position: 87
Branch analysis from position: 57
2 jumps found. (Code = 43) Position 1 = 59, Position 2 = 66
Branch analysis from position: 59
1 jumps found. (Code = 42) Position 1 = 80
Branch analysis from position: 80
Branch analysis from position: 66
2 jumps found. (Code = 44) Position 1 = 87, Position 2 = 25
Branch analysis from position: 87
Branch analysis from position: 25
Branch analysis from position: 38
Branch analysis from position: 11
filename:       /in/tQgip
function name:  fix
number of ops:  90
compiled vars:  !0 = $value, !1 = $result, !2 = $p
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    5     1        ASSIGN                                                   !1, ''
    6     2        FETCH_DIM_R                                      ~4      !0, 0
          3        IS_IDENTICAL                                     ~5      ~4, '%27'
          4      > JMPNZ_EX                                         ~5      ~5, ->11
          5    >   INIT_FCALL                                               'strpos'
          6        SEND_VAR                                                 !0
          7        SEND_VAL                                                 '%24'
          8        DO_ICALL                                         $6      
          9        TYPE_CHECK                                    4  ~7      $6
         10        BOOL                                             ~5      ~7
         11    > > JMPZ                                                     ~5, ->18
    7    12    >   ROPE_INIT                                     3  ~9      'return+%40'
         13        ROPE_ADD                                      1  ~9      ~9, !0
         14        ROPE_END                                      2  ~8      ~9, '%3B'
         15        INCLUDE_OR_EVAL                                  $11     ~8, EVAL
         16        ASSIGN                                                   !1, $11
    6    17      > JMP                                                      ->88
    9    18    >   INIT_FCALL                                               'substr'
         19        SEND_VAR                                                 !0
         20        SEND_VAL                                                 1
         21        SEND_VAL                                                 -1
         22        DO_ICALL                                         $13     
         23        ASSIGN                                                   !0, $13
   10    24      > JMP                                                      ->80
   11    25    >   ADD                                              ~15     !2, 1
         26        ISSET_ISEMPTY_DIM_OBJ                         0  ~16     !0, ~15
         27        BOOL_NOT                                         ~17     ~16
         28      > JMPZ                                                     ~17, ->30
   12    29    > > JMP                                                      ->87
   14    30    >   IS_SMALLER                                               0, !2
         31      > JMPZ                                                     ~18, ->38
   15    32    >   INIT_FCALL                                               'substr'
         33        SEND_VAR                                                 !0
         34        SEND_VAL                                                 0
         35        SEND_VAR                                                 !2
         36        DO_ICALL                                         $19     
         37        ASSIGN_OP                                     8          !1, $19
   17    38    >   INIT_FCALL                                               'substr'
         39        SEND_VAR                                                 !0
         40        ADD                                              ~21     !2, 1
         41        SEND_VAL                                                 ~21
         42        DO_ICALL                                         $22     
         43        ASSIGN                                                   !0, $22
   18    44        INIT_FCALL                                               'strpos'
         45        SEND_VAR                                                 !0
         46        SEND_VAL                                                 '%24'
         47        DO_ICALL                                         $24     
         48        ASSIGN                                                   !2, $24
   19    49        TYPE_CHECK                                    4          !2
         50      > JMPZ                                                     ~26, ->57
   20    51    >   CONCAT                                           ~27     'return+%22%5C', !0
         52        CONCAT                                           ~28     ~27, '%22%3B'
         53        INCLUDE_OR_EVAL                                  $29     ~28, EVAL
         54        ASSIGN_OP                                     8          !1, $29
   21    55        ASSIGN                                                   !0, ''
   22    56      > JMP                                                      ->87
   24    57    >   IS_IDENTICAL                                             !2, 0
         58      > JMPZ                                                     ~32, ->66
   25    59    >   ASSIGN_OP                                     8          !1, '%24'
   26    60        INIT_FCALL                                               'substr'
         61        SEND_VAR                                                 !0
         62        SEND_VAL                                                 1
         63        DO_ICALL                                         $34     
         64        ASSIGN                                                   !0, $34
   24    65      > JMP                                                      ->80
   29    66    >   INIT_FCALL                                               'substr'
         67        SEND_VAR                                                 !0
         68        SEND_VAL                                                 0
         69        SEND_VAR                                                 !2
         70        DO_ICALL                                         $36     
         71        CONCAT                                           ~37     'return+%22%5C', $36
         72        CONCAT                                           ~38     ~37, '%22%3B'
         73        INCLUDE_OR_EVAL                                  $39     ~38, EVAL
         74        ASSIGN_OP                                     8          !1, $39
   30    75        INIT_FCALL                                               'substr'
         76        SEND_VAR                                                 !0
         77        SEND_VAR                                                 !2
         78        DO_ICALL                                         $41     
         79        ASSIGN                                                   !0, $41
   10    80    >   INIT_FCALL                                               'strpos'
         81        SEND_VAR                                                 !0
         82        SEND_VAL                                                 '%5C'
         83        DO_ICALL                                         $43     
         84        ASSIGN                                           ~44     !2, $43
         85        TYPE_CHECK                                  1018          ~44
         86      > JMPNZ                                                    ~45, ->25
   33    87    >   ASSIGN_OP                                     8          !1, !0
   36    88    > > RETURN                                                   !1
   37    89*     > RETURN                                                   null

End of function fix

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
267.89 ms | 1017 KiB | 18 Q