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 'ß' with mb_strrpos with negative offset\n"; for ($i = 0; $i < mb_strlen($word); $i++) { echo sprintf( " Offset %d: %d - %s(%d) - %s(%d) - %s(%d)\n", -$i, mb_strrpos($word, 'ß', -$i), mb_substr($word, 0, -$i), mb_strlen(mb_substr($word, 0, -$i)), 'ß', 1, mb_substr($word, -$i), mb_strlen(mb_substr($word, -$i)) ); } echo "\nLets look for 'ß' with mb_strrpos with positive offset\n"; for ($i = 0; $i < mb_strlen($word); $i++) { echo sprintf( " Offset %d: %d - %s(%d) - %s(%d) - %s(%d)\n", $i, mb_strrpos($word, 'ß', $i), mb_substr($word, 0, $i), mb_strlen(mb_substr($word, 0, $i)), 'ß', 1, mb_substr($word, $i), mb_strlen(mb_substr($word, $i)) ); }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 61
Branch analysis from position: 61
2 jumps found. (Code = 44) Position 1 = 66, Position 2 = 13
Branch analysis from position: 66
1 jumps found. (Code = 42) Position 1 = 111
Branch analysis from position: 111
2 jumps found. (Code = 44) Position 1 = 116, Position 2 = 69
Branch analysis from position: 116
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 69
2 jumps found. (Code = 44) Position 1 = 116, Position 2 = 69
Branch analysis from position: 116
Branch analysis from position: 69
Branch analysis from position: 13
2 jumps found. (Code = 44) Position 1 = 66, Position 2 = 13
Branch analysis from position: 66
Branch analysis from position: 13
filename:       /in/HhgQf
function name:  (null)
number of ops:  117
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%9F%27+with+mb_strrpos+with+negative+offset%0A'
    8    11        ASSIGN                                                   !1, 0
         12      > JMP                                                      ->61
    9    13    >   INIT_FCALL                                               'sprintf'
   10    14        SEND_VAL                                                 '+Offset+%25d%3A+%25d+-+%25s%28%25d%29+-+%25s%28%25d%29+-+%25s%28%25d%29%0A'
   11    15        MUL                                              ~6      !1, -1
         16        SEND_VAL                                                 ~6
   12    17        INIT_FCALL                                               'mb_strrpos'
         18        SEND_VAR                                                 !0
         19        SEND_VAL                                                 '%C3%9F'
         20        MUL                                              ~7      !1, -1
         21        SEND_VAL                                                 ~7
         22        DO_ICALL                                         $8      
         23        SEND_VAR                                                 $8
   13    24        INIT_FCALL                                               'mb_substr'
         25        SEND_VAR                                                 !0
         26        SEND_VAL                                                 0
         27        MUL                                              ~9      !1, -1
         28        SEND_VAL                                                 ~9
         29        DO_ICALL                                         $10     
         30        SEND_VAR                                                 $10
   14    31        INIT_FCALL                                               'mb_strlen'
         32        INIT_FCALL                                               'mb_substr'
         33        SEND_VAR                                                 !0
         34        SEND_VAL                                                 0
         35        MUL                                              ~11     !1, -1
         36        SEND_VAL                                                 ~11
         37        DO_ICALL                                         $12     
         38        SEND_VAR                                                 $12
         39        DO_ICALL                                         $13     
         40        SEND_VAR                                                 $13
   15    41        SEND_VAL                                                 '%C3%9F'
   16    42        SEND_VAL                                                 1
   17    43        INIT_FCALL                                               'mb_substr'
         44        SEND_VAR                                                 !0
         45        MUL                                              ~14     !1, -1
         46        SEND_VAL                                                 ~14
         47        DO_ICALL                                         $15     
         48        SEND_VAR                                                 $15
   18    49        INIT_FCALL                                               'mb_strlen'
         50        INIT_FCALL                                               'mb_substr'
         51        SEND_VAR                                                 !0
         52        MUL                                              ~16     !1, -1
         53        SEND_VAL                                                 ~16
         54        DO_ICALL                                         $17     
         55        SEND_VAR                                                 $17
         56        DO_ICALL                                         $18     
         57        SEND_VAR                                                 $18
    9    58        DO_ICALL                                         $19     
   18    59        ECHO                                                     $19
    8    60        PRE_INC                                                  !1
         61    >   INIT_FCALL                                               'mb_strlen'
         62        SEND_VAR                                                 !0
         63        DO_ICALL                                         $21     
         64        IS_SMALLER                                               !1, $21
         65      > JMPNZ                                                    ~22, ->13
   21    66    >   ECHO                                                     '%0ALets+look+for+%27%C3%9F%27+with+mb_strrpos+with+positive+offset%0A'
   23    67        ASSIGN                                                   !1, 0
         68      > JMP                                                      ->111
   24    69    >   INIT_FCALL                                               'sprintf'
   25    70        SEND_VAL                                                 '+Offset+%25d%3A+%25d+-+%25s%28%25d%29+-+%25s%28%25d%29+-+%25s%28%25d%29%0A'
   26    71        SEND_VAR                                                 !1
   27    72        INIT_FCALL                                               'mb_strrpos'
         73        SEND_VAR                                                 !0
         74        SEND_VAL                                                 '%C3%9F'
         75        SEND_VAR                                                 !1
         76        DO_ICALL                                         $24     
         77        SEND_VAR                                                 $24
   28    78        INIT_FCALL                                               'mb_substr'
         79        SEND_VAR                                                 !0
         80        SEND_VAL                                                 0
         81        SEND_VAR                                                 !1
         82        DO_ICALL                                         $25     
         83        SEND_VAR                                                 $25
   29    84        INIT_FCALL                                               'mb_strlen'
         85        INIT_FCALL                                               'mb_substr'
         86        SEND_VAR                                                 !0
         87        SEND_VAL                                                 0
         88        SEND_VAR                                                 !1
         89        DO_ICALL                                         $26     
         90        SEND_VAR                                                 $26
         91        DO_ICALL                                         $27     
         92        SEND_VAR                                                 $27
   30    93        SEND_VAL                                                 '%C3%9F'
   31    94        SEND_VAL                                                 1
   32    95        INIT_FCALL                                               'mb_substr'
         96        SEND_VAR                                                 !0
         97        SEND_VAR                                                 !1
         98        DO_ICALL                                         $28     
         99        SEND_VAR                                                 $28
   33   100        INIT_FCALL                                               'mb_strlen'
        101        INIT_FCALL                                               'mb_substr'
        102        SEND_VAR                                                 !0
        103        SEND_VAR                                                 !1
        104        DO_ICALL                                         $29     
        105        SEND_VAR                                                 $29
        106        DO_ICALL                                         $30     
        107        SEND_VAR                                                 $30
   24   108        DO_ICALL                                         $31     
   33   109        ECHO                                                     $31
   23   110        PRE_INC                                                  !1
        111    >   INIT_FCALL                                               'mb_strlen'
        112        SEND_VAR                                                 !0
        113        DO_ICALL                                         $33     
        114        IS_SMALLER                                               !1, $33
        115      > JMPNZ                                                    ~34, ->69
   35   116    > > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
141.1 ms | 1010 KiB | 17 Q