3v4l.org

run code in 300+ 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.0.0


preferences:
126.46 ms | 1405 KiB | 15 Q