3v4l.org

run code in 300+ PHP versions simultaneously
<?php $filenames = [ 'abc(3).jpg', 'xyz.pdf' ]; foreach ($filenames as $filename) { echo preg_replace_callback('/(?:\((\d+)\))?(\.[^.]+$)/', function($matches) { $version = empty($matches[1]) ? 0 : $matches[1]; return '(' . ($version + 1) . ')' . $matches[2]; }, $filename); echo "\n"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 2, Position 2 = 12
Branch analysis from position: 2
2 jumps found. (Code = 78) Position 1 = 3, Position 2 = 12
Branch analysis from position: 3
1 jumps found. (Code = 42) Position 1 = 2
Branch analysis from position: 2
Branch analysis from position: 12
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
filename:       /in/smTqT
function name:  (null)
number of ops:  14
compiled vars:  !0 = $filenames, !1 = $filename
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, <array>
    8     1      > FE_RESET_R                                       $3      !0, ->12
          2    > > FE_FETCH_R                                               $3, !1, ->12
    9     3    >   INIT_FCALL                                               'preg_replace_callback'
          4        SEND_VAL                                                 '%2F%28%3F%3A%5C%28%28%5Cd%2B%29%5C%29%29%3F%28%5C.%5B%5E.%5D%2B%24%29%2F'
   10     5        DECLARE_LAMBDA_FUNCTION                          ~4      [0]
   13     6        SEND_VAL                                                 ~4
   14     7        SEND_VAR                                                 !1
    9     8        DO_ICALL                                         $5      
   14     9        ECHO                                                     $5
   15    10        ECHO                                                     '%0A'
    8    11      > JMP                                                      ->2
         12    >   FE_FREE                                                  $3
   16    13      > RETURN                                                   1


Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 5
Branch analysis from position: 3
1 jumps found. (Code = 42) Position 1 = 7
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 5
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/smTqT
function name:  {closure}
number of ops:  15
compiled vars:  !0 = $matches, !1 = $version
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   10     0  E >   RECV                                             !0      
   11     1        ISSET_ISEMPTY_DIM_OBJ                         1          !0, 1
          2      > JMPZ                                                     ~2, ->5
          3    >   QM_ASSIGN                                        ~3      0
          4      > JMP                                                      ->7
          5    >   FETCH_DIM_R                                      ~4      !0, 1
          6        QM_ASSIGN                                        ~3      ~4
          7    >   ASSIGN                                                   !1, ~3
   12     8        ADD                                              ~6      !1, 1
          9        CONCAT                                           ~7      '%28', ~6
         10        CONCAT                                           ~8      ~7, '%29'
         11        FETCH_DIM_R                                      ~9      !0, 2
         12        CONCAT                                           ~10     ~8, ~9
         13      > RETURN                                                   ~10
   13    14*     > RETURN                                                   null

End of Dynamic Function 0

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
138.47 ms | 1001 KiB | 14 Q