3v4l.org

run code in 300+ PHP versions simultaneously
<?php function JSEscape($s) { static $aSearch = array("\xe2\x80\xa9", "\\", "'", "\"", "\r\n", "\r", "\n", "\xe2\x80\xa8", "*/", "</"); static $aReplace = array(" ", "\\\\", "\\'", '\\"', "\n", "\n", "\\n", "\\n", "*\\/", "<\\/"); $val = str_replace($aSearch, $aReplace, $s); return $val; } function PhpToJSObject($arData, $bWS = false, $bSkipTilda = false, $bExtType = false) { static $aSearch = array("\r", "\n"); $bExtType = !!$bExtType; switch(gettype($arData)) { case "string": if(strpbrk($arData, "'\"\n\r<\\\x80") !== false) return "'".JSEscape($arData)."'"; else return "'".$arData."'"; case "array": $i = -1; $j = -1; foreach($arData as $j => $temp) { $i++; if ($j !== $i) break; } if($j === $i) { foreach($arData as $key => $value) { switch(gettype($value)) { case "string": if(strpbrk($value, "'\"\n\r<\\\x80") !== false) $arData[$key] = "'".JSEscape($value)."'"; else $arData[$key] = "'".$value."'"; break; case "array": $arData[$key] = PhpToJSObject($value, $bWS, $bSkipTilda, $bExtType); break; case "boolean": if($value === true) $arData[$key] = 'true'; else $arData[$key] = 'false'; break; case "integer": case "double": if ($bExtType) { $arData[$key] = $value; break; } default: if(strpbrk($value, "'\"\n\r<\\\x80") !== false) $arData[$key] = "'".JSEscape($value)."'"; else $arData[$key] = "'".$value."'"; break; } } return '['.implode(',', $arData).']'; } $sWS = ','.($bWS ? "\n" : ''); $res = ($bWS ? "\n" : '').'{'; $first = true; foreach($arData as $key => $value) { if ($bSkipTilda && substr($key, 0, 1) == '~') continue; if($first) $first = false; else $res .= $sWS; if(strpbrk($key, "'\"\n\r<\\\x80") !== false) $res .= "'".str_replace($aSearch, '', JSEscape($key))."':"; else $res .= "'".$key."':"; switch(gettype($value)) { case "string": if(strpbrk($value, "'\"\n\r<\\\x80") !== false) $res .= "'".JSEscape($value)."'"; else $res .= "'".$value."'"; break; case "array": $res .= PhpToJSObject($value, $bWS, $bSkipTilda, $bExtType); break; case "boolean": if($value === true) $res .= 'true'; else $res .= 'false'; break; case "integer": case "double": if ($bExtType) { $res .= $value; break; } default: if(strpbrk($value, "'\"\n\r<\\\x80") !== false) $res .= "'".JSEscape($value)."'"; else $res .= "'".$value."'"; break; } } $res .= ($bWS ? "\n" : '').'}'; return $res; case "boolean": if($arData === true) return 'true'; else return 'false'; case "integer": case "double": if ($bExtType) { return $arData; } default: if(strpbrk($arData, "'\"\n\r<\\\x80") !== false) return "'".JSEscape($arData)."'"; else return "'".$arData."'"; } } $a=array( "a0" => "b", "a1" => "b", "a2" => "b", "a3" => "b", "b" => "c'", "c" => array(1,2,3), "d" => true, "e" => 15.5 ); print_r(PhpToJSObject($a));
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/JaLFk
function name:  (null)
number of ops:  8
compiled vars:  !0 = $a
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  141     0  E >   ASSIGN                                                   !0, <array>
  151     1        INIT_FCALL                                               'print_r'
          2        INIT_FCALL                                               'phptojsobject'
          3        SEND_VAR                                                 !0
          4        DO_FCALL                                      0  $2      
          5        SEND_VAR                                                 $2
          6        DO_ICALL                                                 
          7      > RETURN                                                   1

Function jsescape:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/JaLFk
function name:  JSEscape
number of ops:  11
compiled vars:  !0 = $s, !1 = $aSearch, !2 = $aReplace, !3 = $val
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
    4     1        BIND_STATIC                                              !1
    5     2        BIND_STATIC                                              !2
    6     3        INIT_FCALL                                               'str_replace'
          4        SEND_VAR                                                 !1
          5        SEND_VAR                                                 !2
          6        SEND_VAR                                                 !0
          7        DO_ICALL                                         $4      
          8        ASSIGN                                                   !3, $4
    7     9      > RETURN                                                   !3
    8    10*     > RETURN                                                   null

End of function jsescape

Function phptojsobject:
Finding entry points
Branch analysis from position: 0
7 jumps found. (Code = 188) Position 1 = 21, Position 2 = 39, Position 3 = 264, Position 4 = 271, Position 5 = 271, Position 6 = 274, Position 7 = 10
Branch analysis from position: 21
2 jumps found. (Code = 43) Position 1 = 27, Position 2 = 35
Branch analysis from position: 27
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 35
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 39
2 jumps found. (Code = 77) Position 1 = 42, Position 2 = 49
Branch analysis from position: 42
2 jumps found. (Code = 78) Position 1 = 43, Position 2 = 49
Branch analysis from position: 43
2 jumps found. (Code = 43) Position 1 = 47, Position 2 = 48
Branch analysis from position: 47
1 jumps found. (Code = 42) Position 1 = 49
Branch analysis from position: 49
2 jumps found. (Code = 43) Position 1 = 52, Position 2 = 138
Branch analysis from position: 52
2 jumps found. (Code = 77) Position 1 = 53, Position 2 = 129
Branch analysis from position: 53
2 jumps found. (Code = 78) Position 1 = 54, Position 2 = 129
Branch analysis from position: 54
7 jumps found. (Code = 188) Position 1 = 68, Position 2 = 87, Position 3 = 96, Position 4 = 104, Position 5 = 104, Position 6 = 108, Position 7 = 57
Branch analysis from position: 68
2 jumps found. (Code = 43) Position 1 = 74, Position 2 = 82
Branch analysis from position: 74
1 jumps found. (Code = 42) Position 1 = 86
Branch analysis from position: 86
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
1 jumps found. (Code = 42) Position 1 = 53
Branch analysis from position: 53
Branch analysis from position: 82
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
Branch analysis from position: 87
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
Branch analysis from position: 96
2 jumps found. (Code = 43) Position 1 = 98, Position 2 = 101
Branch analysis from position: 98
1 jumps found. (Code = 42) Position 1 = 103
Branch analysis from position: 103
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
Branch analysis from position: 101
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
Branch analysis from position: 104
2 jumps found. (Code = 43) Position 1 = 105, Position 2 = 108
Branch analysis from position: 105
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
Branch analysis from position: 108
2 jumps found. (Code = 43) Position 1 = 114, Position 2 = 122
Branch analysis from position: 114
1 jumps found. (Code = 42) Position 1 = 126
Branch analysis from position: 126
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
Branch analysis from position: 122
1 jumps found. (Code = 42) Position 1 = 127
Branch analysis from position: 127
Branch analysis from position: 104
Branch analysis from position: 108
Branch analysis from position: 57
2 jumps found. (Code = 44) Position 1 = 59, Position 2 = 68
Branch analysis from position: 59
2 jumps found. (Code = 44) Position 1 = 61, Position 2 = 87
Branch analysis from position: 61
2 jumps found. (Code = 44) Position 1 = 63, Position 2 = 96
Branch analysis from position: 63
2 jumps found. (Code = 44) Position 1 = 65, Position 2 = 104
Branch analysis from position: 65
2 jumps found. (Code = 44) Position 1 = 67, Position 2 = 104
Branch analysis from position: 67
1 jumps found. (Code = 42) Position 1 = 108
Branch analysis from position: 108
Branch analysis from position: 104
Branch analysis from position: 104
Branch analysis from position: 96
Branch analysis from position: 87
Branch analysis from position: 68
Branch analysis from position: 129
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 129
Branch analysis from position: 138
2 jumps found. (Code = 43) Position 1 = 139, Position 2 = 141
Branch analysis from position: 139
1 jumps found. (Code = 42) Position 1 = 142
Branch analysis from position: 142
2 jumps found. (Code = 43) Position 1 = 145, Position 2 = 147
Branch analysis from position: 145
1 jumps found. (Code = 42) Position 1 = 148
Branch analysis from position: 148
2 jumps found. (Code = 77) Position 1 = 152, Position 2 = 255
Branch analysis from position: 152
2 jumps found. (Code = 78) Position 1 = 153, Position 2 = 255
Branch analysis from position: 153
2 jumps found. (Code = 46) Position 1 = 155, Position 2 = 162
Branch analysis from position: 155
2 jumps found. (Code = 43) Position 1 = 163, Position 2 = 164
Branch analysis from position: 163
1 jumps found. (Code = 42) Position 1 = 152
Branch analysis from position: 152
Branch analysis from position: 164
2 jumps found. (Code = 43) Position 1 = 165, Position 2 = 167
Branch analysis from position: 165
1 jumps found. (Code = 42) Position 1 = 168
Branch analysis from position: 168
2 jumps found. (Code = 43) Position 1 = 174, Position 2 = 186
Branch analysis from position: 174
1 jumps found. (Code = 42) Position 1 = 189
Branch analysis from position: 189
7 jumps found. (Code = 188) Position 1 = 202, Position 2 = 219, Position 3 = 227, Position 4 = 233, Position 5 = 233, Position 6 = 236, Position 7 = 191
Branch analysis from position: 202
2 jumps found. (Code = 43) Position 1 = 208, Position 2 = 215
Branch analysis from position: 208
1 jumps found. (Code = 42) Position 1 = 218
Branch analysis from position: 218
1 jumps found. (Code = 42) Position 1 = 253
Branch analysis from position: 253
1 jumps found. (Code = 42) Position 1 = 152
Branch analysis from position: 152
Branch analysis from position: 215
1 jumps found. (Code = 42) Position 1 = 253
Branch analysis from position: 253
Branch analysis from position: 219
1 jumps found. (Code = 42) Position 1 = 253
Branch analysis from position: 253
Branch analysis from position: 227
2 jumps found. (Code = 43) Position 1 = 229, Position 2 = 231
Branch analysis from position: 229
1 jumps found. (Code = 42) Position 1 = 232
Branch analysis from position: 232
1 jumps found. (Code = 42) Position 1 = 253
Branch analysis from position: 253
Branch analysis from position: 231
1 jumps found. (Code = 42) Position 1 = 253
Branch analysis from position: 253
Branch analysis from position: 233
2 jumps found. (Code = 43) Position 1 = 234, Position 2 = 236
Branch analysis from position: 234
1 jumps found. (Code = 42) Position 1 = 253
Branch analysis from position: 253
Branch analysis from position: 236
2 jumps found. (Code = 43) Position 1 = 242, Position 2 = 249
Branch analysis from position: 242
1 jumps found. (Code = 42) Position 1 = 252
Branch analysis from position: 252
1 jumps found. (Code = 42) Position 1 = 253
Branch analysis from position: 253
Branch analysis from position: 249
1 jumps found. (Code = 42) Position 1 = 253
Branch analysis from position: 253
Branch analysis from position: 233
Branch analysis from position: 236
Branch analysis from position: 191
2 jumps found. (Code = 44) Position 1 = 193, Position 2 = 202
Branch analysis from position: 193
2 jumps found. (Code = 44) Position 1 = 195, Position 2 = 219
Branch analysis from position: 195
2 jumps found. (Code = 44) Position 1 = 197, Position 2 = 227
Branch analysis from position: 197
2 jumps found. (Code = 44) Position 1 = 199, Position 2 = 233
Branch analysis from position: 199
2 jumps found. (Code = 44) Position 1 = 201, Position 2 = 233
Branch analysis from position: 201
1 jumps found. (Code = 42) Position 1 = 236
Branch analysis from position: 236
Branch analysis from position: 233
Branch analysis from position: 233
Branch analysis from position: 227
Branch analysis from position: 219
Branch analysis from position: 202
Branch analysis from position: 186
7 jumps found. (Code = 188) Position 1 = 202, Position 2 = 219, Position 3 = 227, Position 4 = 233, Position 5 = 233, Position 6 = 236, Position 7 = 191
Branch analysis from position: 202
Branch analysis from position: 219
Branch analysis from position: 227
Branch analysis from position: 233
Branch analysis from position: 233
Branch analysis from position: 236
Branch analysis from position: 191
Branch analysis from position: 167
2 jumps found. (Code = 43) Position 1 = 174, Position 2 = 186
Branch analysis from position: 174
Branch analysis from position: 186
Branch analysis from position: 162
Branch analysis from position: 255
2 jumps found. (Code = 43) Position 1 = 257, Position 2 = 259
Branch analysis from position: 257
1 jumps found. (Code = 42) Position 1 = 260
Branch analysis from position: 260
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 259
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 255
Branch analysis from position: 147
2 jumps found. (Code = 77) Position 1 = 152, Position 2 = 255
Branch analysis from position: 152
Branch analysis from position: 255
Branch analysis from position: 141
2 jumps found. (Code = 43) Position 1 = 145, Position 2 = 147
Branch analysis from position: 145
Branch analysis from position: 147
Branch analysis from position: 48
1 jumps found. (Code = 42) Position 1 = 42
Branch analysis from position: 42
Branch analysis from position: 49
Branch analysis from position: 49
Branch analysis from position: 264
2 jumps found. (Code = 43) Position 1 = 266, Position 2 = 269
Branch analysis from position: 266
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 269
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 271
2 jumps found. (Code = 43) Position 1 = 272, Position 2 = 274
Branch analysis from position: 272
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 274
2 jumps found. (Code = 43) Position 1 = 280, Position 2 = 288
Branch analysis from position: 280
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 288
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 271
Branch analysis from position: 274
Branch analysis from position: 10
2 jumps found. (Code = 44) Position 1 = 12, Position 2 = 21
Branch analysis from position: 12
2 jumps found. (Code = 44) Position 1 = 14, Position 2 = 39
Branch analysis from position: 14
2 jumps found. (Code = 44) Position 1 = 16, Position 2 = 264
Branch analysis from position: 16
2 jumps found. (Code = 44) Position 1 = 18, Position 2 = 271
Branch analysis from position: 18
2 jumps found. (Code = 44) Position 1 = 20, Position 2 = 271
Branch analysis from position: 20
1 jumps found. (Code = 42) Position 1 = 274
Branch analysis from position: 274
Branch analysis from position: 271
Branch analysis from position: 271
Branch analysis from position: 264
Branch analysis from position: 39
Branch analysis from position: 21
filename:       /in/JaLFk
function name:  PhpToJSObject
number of ops:  294
compiled vars:  !0 = $arData, !1 = $bWS, !2 = $bSkipTilda, !3 = $bExtType, !4 = $aSearch, !5 = $i, !6 = $j, !7 = $temp, !8 = $value, !9 = $key, !10 = $sWS, !11 = $res, !12 = $first
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   10     0  E >   RECV                                             !0      
          1        RECV_INIT                                        !1      <false>
          2        RECV_INIT                                        !2      <false>
          3        RECV_INIT                                        !3      <false>
   12     4        BIND_STATIC                                              !4
   13     5        BOOL_NOT                                         ~13     !3
          6        BOOL_NOT                                         ~14     ~13
          7        ASSIGN                                                   !3, ~14
   15     8        GET_TYPE                                         ~16     !0
          9      > SWITCH_STRING                                            ~16, [ 'string':->21, 'array':->39, 'boolean':->264, 'integer':->271, 'double':->271, ], ->274
   17    10    >   CASE                                                     ~16, 'string'
         11      > JMPNZ                                                    ~17, ->21
   22    12    >   CASE                                                     ~16, 'array'
         13      > JMPNZ                                                    ~17, ->39
  123    14    >   CASE                                                     ~16, 'boolean'
         15      > JMPNZ                                                    ~17, ->264
  128    16    >   CASE                                                     ~16, 'integer'
         17      > JMPNZ                                                    ~17, ->271
  129    18    >   CASE                                                     ~16, 'double'
         19      > JMPNZ                                                    ~17, ->271
         20    > > JMP                                                      ->274
   18    21    >   INIT_FCALL                                               'strpbrk'
         22        SEND_VAR                                                 !0
         23        SEND_VAL                                                 '%27%22%0A%0D%3C%5C%80'
         24        DO_ICALL                                         $18     
         25        TYPE_CHECK                                  1018          $18
         26      > JMPZ                                                     ~19, ->35
   19    27    >   INIT_FCALL                                               'jsescape'
         28        SEND_VAR                                                 !0
         29        DO_FCALL                                      0  $20     
         30        CONCAT                                           ~21     '%27', $20
         31        CONCAT                                           ~22     ~21, '%27'
         32        FREE                                                     ~16
         33      > RETURN                                                   ~22
         34*       JMP                                                      ->39
   21    35    >   CONCAT                                           ~23     '%27', !0
         36        CONCAT                                           ~24     ~23, '%27'
         37        FREE                                                     ~16
         38      > RETURN                                                   ~24
   23    39    >   ASSIGN                                                   !5, -1
   24    40        ASSIGN                                                   !6, -1
   25    41      > FE_RESET_R                                       $27     !0, ->49
         42    > > FE_FETCH_R                                       ~28     $27, !7, ->49
         43    >   ASSIGN                                                   !6, ~28
   27    44        PRE_INC                                                  !5
   28    45        IS_NOT_IDENTICAL                                         !6, !5
         46      > JMPZ                                                     ~31, ->48
   29    47    > > JMP                                                      ->49
   25    48    > > JMP                                                      ->42
         49    >   FE_FREE                                                  $27
   32    50        IS_IDENTICAL                                             !6, !5
         51      > JMPZ                                                     ~32, ->138
   34    52    > > FE_RESET_R                                       $33     !0, ->129
         53    > > FE_FETCH_R                                       ~34     $33, !8, ->129
         54    >   ASSIGN                                                   !9, ~34
   36    55        GET_TYPE                                         ~36     !8
         56      > SWITCH_STRING                                            ~36, [ 'string':->68, 'array':->87, 'boolean':->96, 'integer':->104, 'double':->104, ], ->108
   38    57    >   CASE                                                     ~36, 'string'
         58      > JMPNZ                                                    ~37, ->68
   44    59    >   CASE                                                     ~36, 'array'
         60      > JMPNZ                                                    ~37, ->87
   47    61    >   CASE                                                     ~36, 'boolean'
         62      > JMPNZ                                                    ~37, ->96
   53    63    >   CASE                                                     ~36, 'integer'
         64      > JMPNZ                                                    ~37, ->104
   54    65    >   CASE                                                     ~36, 'double'
         66      > JMPNZ                                                    ~37, ->104
         67    > > JMP                                                      ->108
   39    68    >   INIT_FCALL                                               'strpbrk'
         69        SEND_VAR                                                 !8
         70        SEND_VAL                                                 '%27%22%0A%0D%3C%5C%80'
         71        DO_ICALL                                         $38     
         72        TYPE_CHECK                                  1018          $38
         73      > JMPZ                                                     ~39, ->82
   40    74    >   INIT_FCALL                                               'jsescape'
         75        SEND_VAR                                                 !8
         76        DO_FCALL                                      0  $41     
         77        CONCAT                                           ~42     '%27', $41
         78        CONCAT                                           ~43     ~42, '%27'
         79        ASSIGN_DIM                                               !0, !9
         80        OP_DATA                                                  ~43
         81      > JMP                                                      ->86
   42    82    >   CONCAT                                           ~45     '%27', !8
         83        CONCAT                                           ~46     ~45, '%27'
         84        ASSIGN_DIM                                               !0, !9
         85        OP_DATA                                                  ~46
   43    86    > > JMP                                                      ->127
   45    87    >   INIT_FCALL_BY_NAME                                       'PhpToJSObject'
         88        SEND_VAR_EX                                              !8
         89        SEND_VAR_EX                                              !1
         90        SEND_VAR_EX                                              !2
         91        SEND_VAR_EX                                              !3
         92        DO_FCALL                                      0  $48     
         93        ASSIGN_DIM                                               !0, !9
         94        OP_DATA                                                  $48
   46    95      > JMP                                                      ->127
   48    96    >   TYPE_CHECK                                    8          !8
         97      > JMPZ                                                     ~49, ->101
   49    98    >   ASSIGN_DIM                                               !0, !9
         99        OP_DATA                                                  'true'
        100      > JMP                                                      ->103
   51   101    >   ASSIGN_DIM                                               !0, !9
        102        OP_DATA                                                  'false'
   52   103    > > JMP                                                      ->127
   55   104    > > JMPZ                                                     !3, ->108
   57   105    >   ASSIGN_DIM                                               !0, !9
        106        OP_DATA                                                  !8
   58   107      > JMP                                                      ->127
   61   108    >   INIT_FCALL                                               'strpbrk'
        109        SEND_VAR                                                 !8
        110        SEND_VAL                                                 '%27%22%0A%0D%3C%5C%80'
        111        DO_ICALL                                         $53     
        112        TYPE_CHECK                                  1018          $53
        113      > JMPZ                                                     ~54, ->122
   62   114    >   INIT_FCALL                                               'jsescape'
        115        SEND_VAR                                                 !8
        116        DO_FCALL                                      0  $56     
        117        CONCAT                                           ~57     '%27', $56
        118        CONCAT                                           ~58     ~57, '%27'
        119        ASSIGN_DIM                                               !0, !9
        120        OP_DATA                                                  ~58
        121      > JMP                                                      ->126
   64   122    >   CONCAT                                           ~60     '%27', !8
        123        CONCAT                                           ~61     ~60, '%27'
        124        ASSIGN_DIM                                               !0, !9
        125        OP_DATA                                                  ~61
   65   126    > > JMP                                                      ->127
        127    >   FREE                                                     ~36
   34   128      > JMP                                                      ->53
        129    >   FE_FREE                                                  $33
   68   130        INIT_FCALL                                               'implode'
        131        SEND_VAL                                                 '%2C'
        132        SEND_VAR                                                 !0
        133        DO_ICALL                                         $62     
        134        CONCAT                                           ~63     '%5B', $62
        135        CONCAT                                           ~64     ~63, '%5D'
        136        FREE                                                     ~16
        137      > RETURN                                                   ~64
   71   138    > > JMPZ                                                     !1, ->141
        139    >   QM_ASSIGN                                        ~65     '%0A'
        140      > JMP                                                      ->142
        141    >   QM_ASSIGN                                        ~65     ''
        142    >   CONCAT                                           ~66     '%2C', ~65
        143        ASSIGN                                                   !10, ~66
   72   144      > JMPZ                                                     !1, ->147
        145    >   QM_ASSIGN                                        ~68     '%0A'
        146      > JMP                                                      ->148
        147    >   QM_ASSIGN                                        ~68     ''
        148    >   CONCAT                                           ~69     ~68, '%7B'
        149        ASSIGN                                                   !11, ~69
   73   150        ASSIGN                                                   !12, <true>
   74   151      > FE_RESET_R                                       $72     !0, ->255
        152    > > FE_FETCH_R                                       ~73     $72, !8, ->255
        153    >   ASSIGN                                                   !9, ~73
   76   154      > JMPZ_EX                                          ~75     !2, ->162
        155    >   INIT_FCALL                                               'substr'
        156        SEND_VAR                                                 !9
        157        SEND_VAL                                                 0
        158        SEND_VAL                                                 1
        159        DO_ICALL                                         $76     
        160        IS_EQUAL                                         ~77     $76, '%7E'
        161        BOOL                                             ~75     ~77
        162    > > JMPZ                                                     ~75, ->164
   77   163    > > JMP                                                      ->152
   79   164    > > JMPZ                                                     !12, ->167
   80   165    >   ASSIGN                                                   !12, <false>
        166      > JMP                                                      ->168
   82   167    >   ASSIGN_OP                                     8          !11, !10
   84   168    >   INIT_FCALL                                               'strpbrk'
        169        SEND_VAR                                                 !9
        170        SEND_VAL                                                 '%27%22%0A%0D%3C%5C%80'
        171        DO_ICALL                                         $80     
        172        TYPE_CHECK                                  1018          $80
        173      > JMPZ                                                     ~81, ->186
   85   174    >   INIT_FCALL                                               'str_replace'
        175        SEND_VAR                                                 !4
        176        SEND_VAL                                                 ''
        177        INIT_FCALL                                               'jsescape'
        178        SEND_VAR                                                 !9
        179        DO_FCALL                                      0  $82     
        180        SEND_VAR                                                 $82
        181        DO_ICALL                                         $83     
        182        CONCAT                                           ~84     '%27', $83
        183        CONCAT                                           ~85     ~84, '%27%3A'
        184        ASSIGN_OP                                     8          !11, ~85
        185      > JMP                                                      ->189
   87   186    >   CONCAT                                           ~87     '%27', !9
        187        CONCAT                                           ~88     ~87, '%27%3A'
        188        ASSIGN_OP                                     8          !11, ~88
   89   189    >   GET_TYPE                                         ~90     !8
        190      > SWITCH_STRING                                            ~90, [ 'string':->202, 'array':->219, 'boolean':->227, 'integer':->233, 'double':->233, ], ->236
   91   191    >   CASE                                                     ~90, 'string'
        192      > JMPNZ                                                    ~91, ->202
   97   193    >   CASE                                                     ~90, 'array'
        194      > JMPNZ                                                    ~91, ->219
  100   195    >   CASE                                                     ~90, 'boolean'
        196      > JMPNZ                                                    ~91, ->227
  106   197    >   CASE                                                     ~90, 'integer'
        198      > JMPNZ                                                    ~91, ->233
  107   199    >   CASE                                                     ~90, 'double'
        200      > JMPNZ                                                    ~91, ->233
        201    > > JMP                                                      ->236
   92   202    >   INIT_FCALL                                               'strpbrk'
        203        SEND_VAR                                                 !8
        204        SEND_VAL                                                 '%27%22%0A%0D%3C%5C%80'
        205        DO_ICALL                                         $92     
        206        TYPE_CHECK                                  1018          $92
        207      > JMPZ                                                     ~93, ->215
   93   208    >   INIT_FCALL                                               'jsescape'
        209        SEND_VAR                                                 !8
        210        DO_FCALL                                      0  $94     
        211        CONCAT                                           ~95     '%27', $94
        212        CONCAT                                           ~96     ~95, '%27'
        213        ASSIGN_OP                                     8          !11, ~96
        214      > JMP                                                      ->218
   95   215    >   CONCAT                                           ~98     '%27', !8
        216        CONCAT                                           ~99     ~98, '%27'
        217        ASSIGN_OP                                     8          !11, ~99
   96   218    > > JMP                                                      ->253
   98   219    >   INIT_FCALL_BY_NAME                                       'PhpToJSObject'
        220        SEND_VAR_EX                                              !8
        221        SEND_VAR_EX                                              !1
        222        SEND_VAR_EX                                              !2
        223        SEND_VAR_EX                                              !3
        224        DO_FCALL                                      0  $101    
        225        ASSIGN_OP                                     8          !11, $101
   99   226      > JMP                             

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
158.52 ms | 1431 KiB | 29 Q