3v4l.org

run code in 500+ PHP versions simultaneously
<?php echo "LIBXML_DOTTED_VERSION: " . LIBXML_DOTTED_VERSION . "\n\n"; $dom = new DOMDocument( '1.0', 'UTF-8' ); $dom->preserveWhiteSpace = true; $dom->formatOutput = false; $dom->substituteEntities = false; $dom->resolveExternals = true; $dom->loadHTML( "<!DOCTYPE html><html><head><meta charset=utf-8><style>span::before{ content: \"⚡️\"; }</style></head><body><span></span></body></html>" ); echo "# \$dom->saveHTML( \$dom->documentElement ):\n"; $first = trim( $dom->saveHTML( $dom->documentElement ) ); echo $first; echo "\n"; echo "\n"; echo "# ~\$dom->saveHTML():\n"; $second = trim( str_replace( "<!DOCTYPE html>\n", "", $dom->saveHTML() ) ); echo $second; echo "\n\n"; echo $first === $second ? "PASS" : "FAIL";
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 39, Position 2 = 41
Branch analysis from position: 39
1 jumps found. (Code = 42) Position 1 = 42
Branch analysis from position: 42
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 41
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/jMfDd
function name:  (null)
number of ops:  44
compiled vars:  !0 = $dom, !1 = $first, !2 = $second
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    2     0  E >   ECHO                                                         'LIBXML_DOTTED_VERSION%3A+2.9.14%0A%0A'
    4     1        NEW                                                  $3      'DOMDocument'
          2        SEND_VAL_EX                                                  '1.0'
          3        SEND_VAL_EX                                                  'UTF-8'
          4        DO_FCALL                                          0          
          5        ASSIGN                                                       !0, $3
    5     6        ASSIGN_OBJ                                                   !0, 'preserveWhiteSpace'
          7        OP_DATA                                                      <true>
    6     8        ASSIGN_OBJ                                                   !0, 'formatOutput'
          9        OP_DATA                                                      <false>
    7    10        ASSIGN_OBJ                                                   !0, 'substituteEntities'
         11        OP_DATA                                                      <false>
    8    12        ASSIGN_OBJ                                                   !0, 'resolveExternals'
         13        OP_DATA                                                      <true>
    9    14        INIT_METHOD_CALL                                             !0, 'loadHTML'
         15        SEND_VAL_EX                                                  '%3C%21DOCTYPE+html%3E%3Chtml%3E%3Chead%3E%3Cmeta+charset%3Dutf-8%3E%3Cstyle%3Espan%3A%3Abefore%7B+content%3A+%22%E2%9A%A1%EF%B8%8F%22%3B+%7D%3C%2Fstyle%3E%3C%2Fhead%3E%3Cbody%3E%3Cspan%3E%3C%2Fspan%3E%3C%2Fbody%3E%3C%2Fhtml%3E'
         16        DO_FCALL                                          0          
   11    17        ECHO                                                         '%23+%24dom-%3EsaveHTML%28+%24dom-%3EdocumentElement+%29%3A%0A'
   12    18        INIT_METHOD_CALL                                             !0, 'saveHTML'
         19        CHECK_FUNC_ARG                                               
         20        FETCH_OBJ_FUNC_ARG                                   $11     !0, 'documentElement'
         21        SEND_FUNC_ARG                                                $11
         22        DO_FCALL                                          0  $12     
         23        FRAMELESS_ICALL_1                trim                ~13     $12
         24        ASSIGN                                                       !1, ~13
   13    25        ECHO                                                         !1
   14    26        ECHO                                                         '%0A'
   15    27        ECHO                                                         '%0A'
   16    28        ECHO                                                         '%23+%7E%24dom-%3EsaveHTML%28%29%3A%0A'
   17    29        INIT_METHOD_CALL                                             !0, 'saveHTML'
         30        DO_FCALL                                          0  $15     
         31        FRAMELESS_ICALL_3                str_replace         ~16     '%3C%21DOCTYPE+html%3E%0A', ''
         32        OP_DATA                                                      $15
         33        FRAMELESS_ICALL_1                trim                ~17     ~16
         34        ASSIGN                                                       !2, ~17
   18    35        ECHO                                                         !2
   19    36        ECHO                                                         '%0A%0A'
   20    37        IS_IDENTICAL                                                 !1, !2
         38      > JMPZ                                                         ~19, ->41
         39    >   QM_ASSIGN                                            ~20     'PASS'
         40      > JMP                                                          ->42
         41    >   QM_ASSIGN                                            ~20     'FAIL'
         42    >   ECHO                                                         ~20
         43      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
161.38 ms | 2678 KiB | 13 Q