3v4l.org

run code in 500+ PHP versions simultaneously
<?php $x = "50+60"; $regex = '#(?<val1>.*)(?<operator>[\+\-\/\*])(?<val2>.*)#'; preg_match( $regex, $x, $match); if (count($match)) { echo $match['val1'] . $match['operator'] . $match['val2'] .' = '; switch ($match['operator']) { case '+': $result = $match['val1'] + $match['val2']; break; case '-': $result = $match['val1'] - $match['val2']; break; case '/': $result = $match['val1'] / $match['val2']; break; case '*': $result = $match['val1'] * $match['val2']; break; } echo $result; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 9, Position 2 = 49
Branch analysis from position: 9
6 jumps found. (Code = 188) Position 1 = 27, Position 2 = 32, Position 3 = 37, Position 4 = 42, Position 5 = 47, Position 6 = 18
Branch analysis from position: 27
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 32
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
Branch analysis from position: 37
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
Branch analysis from position: 42
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
Branch analysis from position: 47
Branch analysis from position: 18
2 jumps found. (Code = 44) Position 1 = 20, Position 2 = 27
Branch analysis from position: 20
2 jumps found. (Code = 44) Position 1 = 22, Position 2 = 32
Branch analysis from position: 22
2 jumps found. (Code = 44) Position 1 = 24, Position 2 = 37
Branch analysis from position: 24
2 jumps found. (Code = 44) Position 1 = 26, Position 2 = 42
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
Branch analysis from position: 42
Branch analysis from position: 37
Branch analysis from position: 32
Branch analysis from position: 27
Branch analysis from position: 49
filename:       /in/LS2pB
function name:  (null)
number of ops:  50
compiled vars:  !0 = $x, !1 = $regex, !2 = $match, !3 = $result
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, '50%2B60'
    4     1        ASSIGN                                                       !1, '%23%28%3F%3Cval1%3E.%2A%29%28%3F%3Coperator%3E%5B%5C%2B%5C-%5C%2F%5C%2A%5D%29%28%3F%3Cval2%3E.%2A%29%23'
    6     2        INIT_FCALL                                                   'preg_match'
          3        SEND_VAR                                                     !1
          4        SEND_VAR                                                     !0
          5        SEND_REF                                                     !2
          6        DO_ICALL                                                     
    8     7        COUNT                                                ~7      !2
          8      > JMPZ                                                         ~7, ->49
    9     9    >   FETCH_DIM_R                                          ~8      !2, 'val1'
         10        FETCH_DIM_R                                          ~9      !2, 'operator'
         11        CONCAT                                               ~10     ~8, ~9
         12        FETCH_DIM_R                                          ~11     !2, 'val2'
         13        CONCAT                                               ~12     ~10, ~11
         14        CONCAT                                               ~13     ~12, '+%3D+'
         15        ECHO                                                         ~13
   10    16        FETCH_DIM_R                                          ~14     !2, 'operator'
         17      > SWITCH_STRING                                                ~14, [ '%2B':->27, '-':->32, '%2F':->37, '%2A':->42, ], ->47
   11    18    >   CASE                                                         ~14, '%2B'
         19      > JMPNZ                                                        ~15, ->27
   14    20    >   CASE                                                         ~14, '-'
         21      > JMPNZ                                                        ~15, ->32
   17    22    >   CASE                                                         ~14, '%2F'
         23      > JMPNZ                                                        ~15, ->37
   20    24    >   CASE                                                         ~14, '%2A'
         25      > JMPNZ                                                        ~15, ->42
         26    > > JMP                                                          ->47
   12    27    >   FETCH_DIM_R                                          ~16     !2, 'val1'
         28        FETCH_DIM_R                                          ~17     !2, 'val2'
         29        ADD                                                  ~18     ~16, ~17
         30        ASSIGN                                                       !3, ~18
   13    31      > JMP                                                          ->47
   15    32    >   FETCH_DIM_R                                          ~20     !2, 'val1'
         33        FETCH_DIM_R                                          ~21     !2, 'val2'
         34        SUB                                                  ~22     ~20, ~21
         35        ASSIGN                                                       !3, ~22
   16    36      > JMP                                                          ->47
   18    37    >   FETCH_DIM_R                                          ~24     !2, 'val1'
         38        FETCH_DIM_R                                          ~25     !2, 'val2'
         39        DIV                                                  ~26     ~24, ~25
         40        ASSIGN                                                       !3, ~26
   19    41      > JMP                                                          ->47
   21    42    >   FETCH_DIM_R                                          ~28     !2, 'val1'
         43        FETCH_DIM_R                                          ~29     !2, 'val2'
         44        MUL                                                  ~30     ~28, ~29
         45        ASSIGN                                                       !3, ~30
   22    46      > JMP                                                          ->47
         47    >   FREE                                                         ~14
   24    48        ECHO                                                         !3
   25    49    > > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
226.62 ms | 3303 KiB | 14 Q