3v4l.org

run code in 300+ PHP versions simultaneously
<?php // UTF-16 surrogate codepoints have no valid encoding in any UTF form. // https://en.wikipedia.org/wiki/UTF-16#U.2BD800_to_U.2BDFFF // If they could be validly represented in UTF-8 their bytes // would be: $high = "\xED\xa1\x92"; // codepoint D852 $low = "\xED\xBD\xA2"; // codepoint DF62 $pair = $high.$low; var_dump( @\iconv('UTF-8', 'UTF-8', $high) === false, @\iconv('UTF-8', 'UTF-8', $low) === false, @\iconv('UTF-8', 'UTF-8', $pair) === false ); /* Should be: * bool(true) * bool(true) * bool(true) * * Result on Windows with 7.0 or 7.1 is: * bool(false) * bool(false) * bool(false) */
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Ff6cr
function name:  (null)
number of ops:  34
compiled vars:  !0 = $high, !1 = $low, !2 = $pair
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    9     0  E >   ASSIGN                                                   !0, '%ED%A1%92'
   10     1        ASSIGN                                                   !1, '%ED%BD%A2'
   11     2        CONCAT                                           ~5      !0, !1
          3        ASSIGN                                                   !2, ~5
   12     4        INIT_FCALL                                               'var_dump'
   13     5        BEGIN_SILENCE                                    ~7      
          6        INIT_FCALL_BY_NAME                                       'iconv'
          7        SEND_VAL_EX                                              'UTF-8'
          8        SEND_VAL_EX                                              'UTF-8'
          9        SEND_VAR_EX                                              !0
         10        DO_FCALL                                      0  $8      
         11        END_SILENCE                                              ~7
         12        TYPE_CHECK                                    4  ~9      $8
         13        SEND_VAL                                                 ~9
   14    14        BEGIN_SILENCE                                    ~10     
         15        INIT_FCALL_BY_NAME                                       'iconv'
         16        SEND_VAL_EX                                              'UTF-8'
         17        SEND_VAL_EX                                              'UTF-8'
         18        SEND_VAR_EX                                              !1
         19        DO_FCALL                                      0  $11     
         20        END_SILENCE                                              ~10
         21        TYPE_CHECK                                    4  ~12     $11
         22        SEND_VAL                                                 ~12
   15    23        BEGIN_SILENCE                                    ~13     
         24        INIT_FCALL_BY_NAME                                       'iconv'
         25        SEND_VAL_EX                                              'UTF-8'
         26        SEND_VAL_EX                                              'UTF-8'
         27        SEND_VAR_EX                                              !2
         28        DO_FCALL                                      0  $14     
         29        END_SILENCE                                              ~13
         30        TYPE_CHECK                                    4  ~15     $14
         31        SEND_VAL                                                 ~15
         32        DO_ICALL                                                 
   27    33      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
173.98 ms | 1401 KiB | 15 Q