3v4l.org

run code in 300+ PHP versions simultaneously
<?php function seems_utf8($str) { $length = strlen($str); for ($i = 0; $i < $length; $i++) { $c = ord($str[$i]); if ($c < 0x80) $n = 0; elseif (($c & 0xE0) == 0xC0) $n = 1; elseif (($c & 0xF0) == 0xE0) $n = 2; elseif (($c & 0xF8) == 0xF0) $n = 3; elseif (($c & 0xFC) == 0xF8) $n = 4; elseif (($c & 0xFE) == 0xFC) $n = 5; else return false; for ($j=0; $j<$n; $j++) { if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80)) return false; } } return true; } var_dump( seems_utf8("aťsd") );
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/RoFVE
function name:  (null)
number of ops:  7
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   21     0  E >   INIT_FCALL                                               'var_dump'
          1        INIT_FCALL                                               'seems_utf8'
          2        SEND_VAL                                                 'a%C5%A5sd'
          3        DO_FCALL                                      0  $0      
          4        SEND_VAR                                                 $0
          5        DO_ICALL                                                 
          6      > RETURN                                                   1

Function seems_utf8:
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 = 60, Position 2 = 5
Branch analysis from position: 60
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 5
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 14
Branch analysis from position: 12
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
1 jumps found. (Code = 42) Position 1 = 55
Branch analysis from position: 55
2 jumps found. (Code = 44) Position 1 = 57, Position 2 = 42
Branch analysis from position: 57
2 jumps found. (Code = 44) Position 1 = 60, Position 2 = 5
Branch analysis from position: 60
Branch analysis from position: 5
Branch analysis from position: 42
2 jumps found. (Code = 47) Position 1 = 45, Position 2 = 52
Branch analysis from position: 45
2 jumps found. (Code = 43) Position 1 = 53, Position 2 = 54
Branch analysis from position: 53
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 54
2 jumps found. (Code = 44) Position 1 = 57, Position 2 = 42
Branch analysis from position: 57
Branch analysis from position: 42
Branch analysis from position: 52
Branch analysis from position: 14
2 jumps found. (Code = 43) Position 1 = 17, Position 2 = 19
Branch analysis from position: 17
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 19
2 jumps found. (Code = 43) Position 1 = 22, Position 2 = 24
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 24
2 jumps found. (Code = 43) Position 1 = 27, Position 2 = 29
Branch analysis from position: 27
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 34
Branch analysis from position: 32
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 34
2 jumps found. (Code = 43) Position 1 = 37, Position 2 = 39
Branch analysis from position: 37
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 39
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/RoFVE
function name:  seems_utf8
number of ops:  62
compiled vars:  !0 = $str, !1 = $length, !2 = $i, !3 = $c, !4 = $n, !5 = $j
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    4     1        STRLEN                                           ~6      !0
          2        ASSIGN                                                   !1, ~6
    5     3        ASSIGN                                                   !2, 0
          4      > JMP                                                      ->58
    6     5    >   INIT_FCALL                                               'ord'
          6        FETCH_DIM_R                                      ~9      !0, !2
          7        SEND_VAL                                                 ~9
          8        DO_ICALL                                         $10     
          9        ASSIGN                                                   !3, $10
    7    10        IS_SMALLER                                               !3, 128
         11      > JMPZ                                                     ~12, ->14
         12    >   ASSIGN                                                   !4, 0
         13      > JMP                                                      ->40
    8    14    >   BW_AND                                           ~14     !3, 224
         15        IS_EQUAL                                                 ~14, 192
         16      > JMPZ                                                     ~15, ->19
         17    >   ASSIGN                                                   !4, 1
         18      > JMP                                                      ->40
    9    19    >   BW_AND                                           ~17     !3, 240
         20        IS_EQUAL                                                 ~17, 224
         21      > JMPZ                                                     ~18, ->24
         22    >   ASSIGN                                                   !4, 2
         23      > JMP                                                      ->40
   10    24    >   BW_AND                                           ~20     !3, 248
         25        IS_EQUAL                                                 ~20, 240
         26      > JMPZ                                                     ~21, ->29
         27    >   ASSIGN                                                   !4, 3
         28      > JMP                                                      ->40
   11    29    >   BW_AND                                           ~23     !3, 252
         30        IS_EQUAL                                                 ~23, 248
         31      > JMPZ                                                     ~24, ->34
         32    >   ASSIGN                                                   !4, 4
         33      > JMP                                                      ->40
   12    34    >   BW_AND                                           ~26     !3, 254
         35        IS_EQUAL                                                 ~26, 252
         36      > JMPZ                                                     ~27, ->39
         37    >   ASSIGN                                                   !4, 5
         38      > JMP                                                      ->40
   13    39    > > RETURN                                                   <false>
   14    40    >   ASSIGN                                                   !5, 0
         41      > JMP                                                      ->55
   15    42    >   PRE_INC                                          ~30     !2
         43        IS_EQUAL                                         ~31     !1, ~30
         44      > JMPNZ_EX                                         ~31     ~31, ->52
         45    >   INIT_FCALL                                               'ord'
         46        FETCH_DIM_R                                      ~32     !0, !2
         47        SEND_VAL                                                 ~32
         48        DO_ICALL                                         $33     
         49        BW_AND                                           ~34     $33, 192
         50        IS_NOT_EQUAL                                     ~35     ~34, 128
         51        BOOL                                             ~31     ~35
         52    > > JMPZ                                                     ~31, ->54
         53    > > RETURN                                                   <false>
   14    54    >   PRE_INC                                                  !5
         55    >   IS_SMALLER                                               !5, !4
         56      > JMPNZ                                                    ~37, ->42
    5    57    >   PRE_INC                                                  !2
         58    >   IS_SMALLER                                               !2, !1
         59      > JMPNZ                                                    ~39, ->5
   18    60    > > RETURN                                                   <true>
   19    61*     > RETURN                                                   null

End of function seems_utf8

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
207.27 ms | 1407 KiB | 18 Q