3v4l.org

run code in 300+ PHP versions simultaneously
<?php $word = 'Heizölrückstoßdämpfer'; echo sprintf("%s is %d characters long\n", $word, mb_strlen($word)); echo "Lets look for 'ßd' with mb_strrpos with negative offset\n"; for ($i = 0; $i < mb_strlen($word); $i++) { echo sprintf( "Offset -%02d: % 2d - %s - %s (%d/%d)\n", $i, mb_strrpos($word, 'ßd', -$i), mb_substr($word, 0, -$i), mb_substr($word, -$i), mb_strlen(mb_substr($word, 0, -$i)), mb_strlen(mb_substr($word, -$i)) ); } echo "\nLets look for 'ßd' with mb_strrpos with positive offset\n"; for ($i = 0; $i < mb_strlen($word); $i++) { echo sprintf( "Offset %02d: % 2d - %s - %s (%d/%d)\n", $i, mb_strrpos($word, 'ßd', $i), mb_substr($word, 0, $i), mb_substr($word, $i), mb_strlen(mb_substr($word, 0, $i)), mb_strlen(mb_substr($word, $i)) ); }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 58
Branch analysis from position: 58
2 jumps found. (Code = 44) Position 1 = 63, Position 2 = 13
Branch analysis from position: 63
1 jumps found. (Code = 42) Position 1 = 106
Branch analysis from position: 106
2 jumps found. (Code = 44) Position 1 = 111, Position 2 = 66
Branch analysis from position: 111
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 66
2 jumps found. (Code = 44) Position 1 = 111, Position 2 = 66
Branch analysis from position: 111
Branch analysis from position: 66
Branch analysis from position: 13
2 jumps found. (Code = 44) Position 1 = 63, Position 2 = 13
Branch analysis from position: 63
Branch analysis from position: 13
filename:       /in/cGsHK
function name:  (null)
number of ops:  112
compiled vars:  !0 = $word, !1 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, 'Heiz%C3%B6lr%C3%BCcksto%C3%9Fd%C3%A4mpfer'
    5     1        INIT_FCALL                                               'sprintf'
          2        SEND_VAL                                                 '%25s+is+%25d+characters+long%0A'
          3        SEND_VAR                                                 !0
          4        INIT_FCALL                                               'mb_strlen'
          5        SEND_VAR                                                 !0
          6        DO_ICALL                                         $3      
          7        SEND_VAR                                                 $3
          8        DO_ICALL                                         $4      
          9        ECHO                                                     $4
    6    10        ECHO                                                     'Lets+look+for+%27%C3%9Fd%27+with+mb_strrpos+with+negative+offset%0A'
    8    11        ASSIGN                                                   !1, 0
         12      > JMP                                                      ->58
    9    13    >   INIT_FCALL                                               'sprintf'
   10    14        SEND_VAL                                                 'Offset+-%2502d%3A+%25+2d+-+%25s+-+%25s+%28%25d%2F%25d%29%0A'
   11    15        SEND_VAR                                                 !1
   12    16        INIT_FCALL                                               'mb_strrpos'
         17        SEND_VAR                                                 !0
         18        SEND_VAL                                                 '%C3%9Fd'
         19        MUL                                              ~6      !1, -1
         20        SEND_VAL                                                 ~6
         21        DO_ICALL                                         $7      
         22        SEND_VAR                                                 $7
   13    23        INIT_FCALL                                               'mb_substr'
         24        SEND_VAR                                                 !0
         25        SEND_VAL                                                 0
         26        MUL                                              ~8      !1, -1
         27        SEND_VAL                                                 ~8
         28        DO_ICALL                                         $9      
         29        SEND_VAR                                                 $9
   14    30        INIT_FCALL                                               'mb_substr'
         31        SEND_VAR                                                 !0
         32        MUL                                              ~10     !1, -1
         33        SEND_VAL                                                 ~10
         34        DO_ICALL                                         $11     
         35        SEND_VAR                                                 $11
   15    36        INIT_FCALL                                               'mb_strlen'
         37        INIT_FCALL                                               'mb_substr'
         38        SEND_VAR                                                 !0
         39        SEND_VAL                                                 0
         40        MUL                                              ~12     !1, -1
         41        SEND_VAL                                                 ~12
         42        DO_ICALL                                         $13     
         43        SEND_VAR                                                 $13
         44        DO_ICALL                                         $14     
         45        SEND_VAR                                                 $14
   16    46        INIT_FCALL                                               'mb_strlen'
         47        INIT_FCALL                                               'mb_substr'
         48        SEND_VAR                                                 !0
         49        MUL                                              ~15     !1, -1
         50        SEND_VAL                                                 ~15
         51        DO_ICALL                                         $16     
         52        SEND_VAR                                                 $16
         53        DO_ICALL                                         $17     
         54        SEND_VAR                                                 $17
    9    55        DO_ICALL                                         $18     
   16    56        ECHO                                                     $18
    8    57        PRE_INC                                                  !1
         58    >   INIT_FCALL                                               'mb_strlen'
         59        SEND_VAR                                                 !0
         60        DO_ICALL                                         $20     
         61        IS_SMALLER                                               !1, $20
         62      > JMPNZ                                                    ~21, ->13
   19    63    >   ECHO                                                     '%0ALets+look+for+%27%C3%9Fd%27+with+mb_strrpos+with+positive+offset%0A'
   21    64        ASSIGN                                                   !1, 0
         65      > JMP                                                      ->106
   22    66    >   INIT_FCALL                                               'sprintf'
   23    67        SEND_VAL                                                 'Offset+%2502d%3A+%25+2d+-+%25s+-+%25s+%28%25d%2F%25d%29%0A'
   24    68        SEND_VAR                                                 !1
   25    69        INIT_FCALL                                               'mb_strrpos'
         70        SEND_VAR                                                 !0
         71        SEND_VAL                                                 '%C3%9Fd'
         72        SEND_VAR                                                 !1
         73        DO_ICALL                                         $23     
         74        SEND_VAR                                                 $23
   26    75        INIT_FCALL                                               'mb_substr'
         76        SEND_VAR                                                 !0
         77        SEND_VAL                                                 0
         78        SEND_VAR                                                 !1
         79        DO_ICALL                                         $24     
         80        SEND_VAR                                                 $24
   27    81        INIT_FCALL                                               'mb_substr'
         82        SEND_VAR                                                 !0
         83        SEND_VAR                                                 !1
         84        DO_ICALL                                         $25     
         85        SEND_VAR                                                 $25
   28    86        INIT_FCALL                                               'mb_strlen'
         87        INIT_FCALL                                               'mb_substr'
         88        SEND_VAR                                                 !0
         89        SEND_VAL                                                 0
         90        SEND_VAR                                                 !1
         91        DO_ICALL                                         $26     
         92        SEND_VAR                                                 $26
         93        DO_ICALL                                         $27     
         94        SEND_VAR                                                 $27
   29    95        INIT_FCALL                                               'mb_strlen'
         96        INIT_FCALL                                               'mb_substr'
         97        SEND_VAR                                                 !0
         98        SEND_VAR                                                 !1
         99        DO_ICALL                                         $28     
        100        SEND_VAR                                                 $28
        101        DO_ICALL                                         $29     
        102        SEND_VAR                                                 $29
   22   103        DO_ICALL                                         $30     
   29   104        ECHO                                                     $30
   21   105        PRE_INC                                                  !1
        106    >   INIT_FCALL                                               'mb_strlen'
        107        SEND_VAR                                                 !0
        108        DO_ICALL                                         $32     
        109        IS_SMALLER                                               !1, $32
        110      > JMPNZ                                                    ~33, ->66
   31   111    > > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
140.97 ms | 1010 KiB | 17 Q