3v4l.org

run code in 500+ 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 = 59
Branch analysis from position: 25
2 jumps found. (Code = 78) Position 1 = 26, Position 2 = 59
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 25
Branch analysis from position: 25
Branch analysis from position: 59
2 jumps found. (Code = 77) Position 1 = 93, Position 2 = 127
Branch analysis from position: 93
2 jumps found. (Code = 78) Position 1 = 94, Position 2 = 127
Branch analysis from position: 94
1 jumps found. (Code = 42) Position 1 = 93
Branch analysis from position: 93
Branch analysis from position: 127
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 127
Branch analysis from position: 59
filename:       /in/acOTR
function name:  (null)
number of ops:  131
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, ->59
         25    > > FE_FETCH_R                                                   $8, !1, ->59
   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                                                   'mb_ord'
         33        INIT_FCALL                                                   'mb_substr'
         34        SEND_VAR                                                     !0
         35        SEND_VAR                                                     !1
         36        SEND_VAL                                                     1
         37        DO_ICALL                                             $10     
         38        SEND_VAR                                                     $10
         39        DO_ICALL                                             $11     
         40        FRAMELESS_ICALL_1                dechex              ~12     $11
         41        ECHO                                                         ~12
         42        ECHO                                                         '%0A'
   13    43        ECHO                                                         'CHARACTER+%23'
         44        ADD                                                  ~13     !1, 1
         45        ECHO                                                         ~13
         46        ECHO                                                         '+BYTE+COUNT%3A+'
         47        INIT_FCALL                                                   'mb_strlen'
         48        INIT_FCALL                                                   'mb_substr'
         49        SEND_VAR                                                     !0
         50        SEND_VAR                                                     !1
         51        SEND_VAL                                                     1
         52        DO_ICALL                                             $14     
         53        SEND_VAR                                                     $14
         54        SEND_VAL                                                     '8bit'
         55        DO_ICALL                                             $15     
         56        ECHO                                                         $15
         57        ECHO                                                         '%0A'
   10    58      > JMP                                                          ->25
         59    >   FE_FREE                                                      $8
   15    60        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'
         61        ECHO                                                         '%0A'
         62        ECHO                                                         '%0A'
   17    63        INIT_FCALL                                                   'mb_convert_encoding'
         64        SEND_VAR                                                     !0
         65        SEND_VAL                                                     'UTF-16'
         66        SEND_VAL                                                     'UTF-8'
         67        DO_ICALL                                             $16     
         68        ASSIGN                                                       !0, $16
   19    69        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'
         70        ECHO                                                         '%0A'
   20    71        ECHO                                                         'STRING%3A+'
         72        ECHO                                                         !0
         73        ECHO                                                         '%0A'
   21    74        ECHO                                                         'CHARACTERS%3A+'
         75        INIT_FCALL                                                   'mb_strlen'
         76        SEND_VAR                                                     !0
         77        DO_ICALL                                             $18     
         78        ECHO                                                         $18
         79        ECHO                                                         '%0A'
   22    80        ECHO                                                         'BYTE+COUNT%3A+'
         81        STRLEN                                               ~19     !0
         82        ECHO                                                         ~19
         83        ECHO                                                         '%0A'
   24    84        INIT_FCALL                                                   'range'
         85        SEND_VAL                                                     0
         86        INIT_FCALL                                                   'mb_strlen'
         87        SEND_VAR                                                     !0
         88        DO_ICALL                                             $20     
         89        SUB                                                  ~21     $20, 1
         90        SEND_VAL                                                     ~21
         91        DO_ICALL                                             $22     
         92      > FE_RESET_R                                           $23     $22, ->127
         93    > > FE_FETCH_R                                                   $23, !1, ->127
   25    94    >   ECHO                                                         '%0A'
   26    95        ECHO                                                         'CHARACTER+%23'
         96        ADD                                                  ~24     !1, 1
         97        ECHO                                                         ~24
         98        ECHO                                                         '+CODE+POINT%3A+'
         99        ECHO                                                         '0x'
        100        INIT_FCALL                                                   'mb_ord'
        101        INIT_FCALL                                                   'mb_substr'
        102        SEND_VAR                                                     !0
        103        SEND_VAR                                                     !1
        104        SEND_VAL                                                     1
        105        DO_ICALL                                             $25     
        106        SEND_VAR                                                     $25
        107        DO_ICALL                                             $26     
        108        FRAMELESS_ICALL_1                dechex              ~27     $26
        109        ECHO                                                         ~27
        110        ECHO                                                         '%0A'
   27   111        ECHO                                                         'CHARACTER+%23'
        112        ADD                                                  ~28     !1, 1
        113        ECHO                                                         ~28
        114        ECHO                                                         '+BYTE+COUNT%3A+'
        115        INIT_FCALL                                                   'mb_strlen'
        116        INIT_FCALL                                                   'mb_substr'
        117        SEND_VAR                                                     !0
        118        SEND_VAR                                                     !1
        119        SEND_VAL                                                     1
        120        DO_ICALL                                             $29     
        121        SEND_VAR                                                     $29
        122        SEND_VAL                                                     '8bit'
        123        DO_ICALL                                             $30     
        124        ECHO                                                         $30
        125        ECHO                                                         '%0A'
   24   126      > JMP                                                          ->93
        127    >   FE_FREE                                                      $23
   29   128        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'
        129        ECHO                                                         '%0A'
   30   130      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
164.28 ms | 2243 KiB | 20 Q