3v4l.org

run code in 300+ PHP versions simultaneously
<?php $string = 'ê[B]éîøoo[/B]åaí'; $isMatch = preg_match( '/\[(\w++)([=]?)([^\]]*?)\]([^\[]*?)\[\/\1\]|\[(HR|\*)\]/', $string, $matches ); if($isMatch) { echo str_replace( "[{$matches[1]}]{$matches[4]}[/{$matches[1]}]", "<b>{$matches[4]}</b>", $string ); }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 28
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 28
filename:       /in/RMEpt
function name:  (null)
number of ops:  29
compiled vars:  !0 = $string, !1 = $isMatch, !2 = $matches
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, '%C3%AA%5BB%5D%C3%A9%C3%AE%C3%B8oo%5B%2FB%5D%C3%A5a%C3%AD'
    4     1        INIT_FCALL                                               'preg_match'
    5     2        SEND_VAL                                                 '%2F%5C%5B%28%5Cw%2B%2B%29%28%5B%3D%5D%3F%29%28%5B%5E%5C%5D%5D%2A%3F%29%5C%5D%28%5B%5E%5C%5B%5D%2A%3F%29%5C%5B%5C%2F%5C1%5C%5D%7C%5C%5B%28HR%7C%5C%2A%29%5C%5D%2F'
    6     3        SEND_VAR                                                 !0
    7     4        SEND_REF                                                 !2
          5        DO_ICALL                                         $4      
    4     6        ASSIGN                                                   !1, $4
   10     7      > JMPZ                                                     !1, ->28
   11     8    >   INIT_FCALL                                               'str_replace'
   12     9        ROPE_INIT                                     7  ~10     '%5B'
         10        FETCH_DIM_R                                      ~6      !2, 1
         11        ROPE_ADD                                      1  ~10     ~10, ~6
         12        ROPE_ADD                                      2  ~10     ~10, '%5D'
         13        FETCH_DIM_R                                      ~7      !2, 4
         14        ROPE_ADD                                      3  ~10     ~10, ~7
         15        ROPE_ADD                                      4  ~10     ~10, '%5B%2F'
         16        FETCH_DIM_R                                      ~8      !2, 1
         17        ROPE_ADD                                      5  ~10     ~10, ~8
         18        ROPE_END                                      6  ~9      ~10, '%5D'
         19        SEND_VAL                                                 ~9
   13    20        ROPE_INIT                                     3  ~16     '%3Cb%3E'
         21        FETCH_DIM_R                                      ~14     !2, 4
         22        ROPE_ADD                                      1  ~16     ~16, ~14
         23        ROPE_END                                      2  ~15     ~16, '%3C%2Fb%3E'
         24        SEND_VAL                                                 ~15
   14    25        SEND_VAR                                                 !0
         26        DO_ICALL                                         $18     
         27        ECHO                                                     $18
   16    28    > > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
152.91 ms | 1396 KiB | 17 Q