3v4l.org

run code in 300+ PHP versions simultaneously
<?php $string = 'πŸ‘ΆπŸ»'; echo '=== UTF-8 =============================', PHP_EOL; echo 'STRING: ', $string, PHP_EOL; echo 'CHARACTERS: ', mb_strlen($string), PHP_EOL; // 2 echo 'BYTE COUNT: ', strlen($string), PHP_EOL; // 8 foreach(range(0, mb_strlen($string) - 1) as $index) { echo PHP_EOL; echo 'CHARACTER #', $index + 1, ' CODE POINT: ', '0x', dechex(mb_ord(mb_substr($string, $index, 1))), PHP_EOL; // [0x1f476, 0x1f3fb] echo 'CHARACTER #', $index + 1, ' BYTE COUNT: ', mb_strlen(mb_substr($string, $index, 1), '8bit'), PHP_EOL; // [4, 4] } echo '=======================================', PHP_EOL, PHP_EOL; $string = mb_convert_encoding($string, 'UTF-16', 'UTF-8'); echo '=== UTF-16 ============================', PHP_EOL; echo 'STRING: ', $string, PHP_EOL; echo 'CHARACTERS: ', mb_strlen($string), PHP_EOL; // should be 2, is 4 echo 'BYTE COUNT: ', strlen($string), PHP_EOL; // should be 8, is 8 foreach(range(0, mb_strlen($string) - 1) as $index) { echo PHP_EOL; echo 'CHARACTER #', $index + 1, ' CODE POINT: ', '0x', dechex(mb_ord(mb_substr($string, $index, 1))), PHP_EOL; // should be [0x1f476, 0x1f3fb], is [0x0, 0x0, 0x0, 0x0] echo 'CHARACTER #', $index + 1, ' BYTE COUNT: ', mb_strlen(mb_substr($string, $index, 1), '8bit'), PHP_EOL; // should be [4, 4], is [2, 2, 2, 2] } echo '=======================================', PHP_EOL;
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 25, Position 2 = 61
Branch analysis from position: 25
2 jumps found. (Code = 78) Position 1 = 26, Position 2 = 61
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 61
2 jumps found. (Code = 77) Position 1 = 95, Position 2 = 131
Branch analysis from position: 95
2 jumps found. (Code = 78) Position 1 = 96, Position 2 = 131
Branch analysis from position: 96
1 jumps found. (Code = 42) Position 1 = 95
Branch analysis from position: 95
Branch analysis from position: 131
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 131
Branch analysis from position: 61
filename:       /in/acOTR
function name:  (null)
number of ops:  135
compiled vars:  !0 = $string, !1 = $index
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '%F0%9F%91%B6%F0%9F%8F%BB'
    5     1        ECHO                                                     '%3D%3D%3D+UTF-8+%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D'
          2        ECHO                                                     '%0A'
    6     3        ECHO                                                     'STRING%3A+'
          4        ECHO                                                     !0
          5        ECHO                                                     '%0A'
    7     6        ECHO                                                     'CHARACTERS%3A+'
          7        INIT_FCALL                                               'mb_strlen'
          8        SEND_VAR                                                 !0
          9        DO_ICALL                                         $3      
         10        ECHO                                                     $3
         11        ECHO                                                     '%0A'
    8    12        ECHO                                                     'BYTE+COUNT%3A+'
         13        STRLEN                                           ~4      !0
         14        ECHO                                                     ~4
         15        ECHO                                                     '%0A'
   10    16        INIT_FCALL                                               'range'
         17        SEND_VAL                                                 0
         18        INIT_FCALL                                               'mb_strlen'
         19        SEND_VAR                                                 !0
         20        DO_ICALL                                         $5      
         21        SUB                                              ~6      $5, 1
         22        SEND_VAL                                                 ~6
         23        DO_ICALL                                         $7      
         24      > FE_RESET_R                                       $8      $7, ->61
         25    > > FE_FETCH_R                                               $8, !1, ->61
   11    26    >   ECHO                                                     '%0A'
   12    27        ECHO                                                     'CHARACTER+%23'
         28        ADD                                              ~9      !1, 1
         29        ECHO                                                     ~9
         30        ECHO                                                     '+CODE+POINT%3A+'
         31        ECHO                                                     '0x'
         32        INIT_FCALL                                               'dechex'
         33        INIT_FCALL                                               'mb_ord'
         34        INIT_FCALL                                               'mb_substr'
         35        SEND_VAR                                                 !0
         36        SEND_VAR                                                 !1
         37        SEND_VAL                                                 1
         38        DO_ICALL                                         $10     
         39        SEND_VAR                                                 $10
         40        DO_ICALL                                         $11     
         41        SEND_VAR                                                 $11
         42        DO_ICALL                                         $12     
         43        ECHO                                                     $12
         44        ECHO                                                     '%0A'
   13    45        ECHO                                                     'CHARACTER+%23'
         46        ADD                                              ~13     !1, 1
         47        ECHO                                                     ~13
         48        ECHO                                                     '+BYTE+COUNT%3A+'
         49        INIT_FCALL                                               'mb_strlen'
         50        INIT_FCALL                                               'mb_substr'
         51        SEND_VAR                                                 !0
         52        SEND_VAR                                                 !1
         53        SEND_VAL                                                 1
         54        DO_ICALL                                         $14     
         55        SEND_VAR                                                 $14
         56        SEND_VAL                                                 '8bit'
         57        DO_ICALL                                         $15     
         58        ECHO                                                     $15
         59        ECHO                                                     '%0A'
   10    60      > JMP                                                      ->25
         61    >   FE_FREE                                                  $8
   15    62        ECHO                                                     '%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D'
         63        ECHO                                                     '%0A'
         64        ECHO                                                     '%0A'
   17    65        INIT_FCALL                                               'mb_convert_encoding'
         66        SEND_VAR                                                 !0
         67        SEND_VAL                                                 'UTF-16'
         68        SEND_VAL                                                 'UTF-8'
         69        DO_ICALL                                         $16     
         70        ASSIGN                                                   !0, $16
   19    71        ECHO                                                     '%3D%3D%3D+UTF-16+%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D'
         72        ECHO                                                     '%0A'
   20    73        ECHO                                                     'STRING%3A+'
         74        ECHO                                                     !0
         75        ECHO                                                     '%0A'
   21    76        ECHO                                                     'CHARACTERS%3A+'
         77        INIT_FCALL                                               'mb_strlen'
         78        SEND_VAR                                                 !0
         79        DO_ICALL                                         $18     
         80        ECHO                                                     $18
         81        ECHO                                                     '%0A'
   22    82        ECHO                                                     'BYTE+COUNT%3A+'
         83        STRLEN                                           ~19     !0
         84        ECHO                                                     ~19
         85        ECHO                                                     '%0A'
   24    86        INIT_FCALL                                               'range'
         87        SEND_VAL                                                 0
         88        INIT_FCALL                                               'mb_strlen'
         89        SEND_VAR                                                 !0
         90        DO_ICALL                                         $20     
         91        SUB                                              ~21     $20, 1
         92        SEND_VAL                                                 ~21
         93        DO_ICALL                                         $22     
         94      > FE_RESET_R                                       $23     $22, ->131
         95    > > FE_FETCH_R                                               $23, !1, ->131
   25    96    >   ECHO                                                     '%0A'
   26    97        ECHO                                                     'CHARACTER+%23'
         98        ADD                                              ~24     !1, 1
         99        ECHO                                                     ~24
        100        ECHO                                                     '+CODE+POINT%3A+'
        101        ECHO                                                     '0x'
        102        INIT_FCALL                                               'dechex'
        103        INIT_FCALL                                               'mb_ord'
        104        INIT_FCALL                                               'mb_substr'
        105        SEND_VAR                                                 !0
        106        SEND_VAR                                                 !1
        107        SEND_VAL                                                 1
        108        DO_ICALL                                         $25     
        109        SEND_VAR                                                 $25
        110        DO_ICALL                                         $26     
        111        SEND_VAR                                                 $26
        112        DO_ICALL                                         $27     
        113        ECHO                                                     $27
        114        ECHO                                                     '%0A'
   27   115        ECHO                                                     'CHARACTER+%23'
        116        ADD                                              ~28     !1, 1
        117        ECHO                                                     ~28
        118        ECHO                                                     '+BYTE+COUNT%3A+'
        119        INIT_FCALL                                               'mb_strlen'
        120        INIT_FCALL                                               'mb_substr'
        121        SEND_VAR                                                 !0
        122        SEND_VAR                                                 !1
        123        SEND_VAL                                                 1
        124        DO_ICALL                                         $29     
        125        SEND_VAR                                                 $29
        126        SEND_VAL                                                 '8bit'
        127        DO_ICALL                                         $30     
        128        ECHO                                                     $30
        129        ECHO                                                     '%0A'
   24   130      > JMP                                                      ->95
        131    >   FE_FREE                                                  $23
   29   132        ECHO                                                     '%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D'
        133        ECHO                                                     '%0A'
   30   134      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
168.38 ms | 1408 KiB | 25 Q