3v4l.org

run code in 300+ PHP versions simultaneously
<?php $url = 'http://api.tivi8k.net/viettel/?cid=160&token=P6cf0Swsh62FKd773_q_Cg&e=1499794112'; $parse = parse_url($url); print_r($parse); function unparse_url($parsed_url) { $scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : ''; $host = isset($parsed_url['host']) ? $parsed_url['host'] : ''; $port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : ''; $user = isset($parsed_url['user']) ? $parsed_url['user'] : ''; $pass = isset($parsed_url['pass']) ? ':' . $parsed_url['pass'] : ''; $pass = ($user || $pass) ? "$pass@" : ''; $path = isset($parsed_url['path']) ? $parsed_url['path'] : ''; $query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : ''; $fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : ''; return "$scheme$user$pass$host$port$path$query$fragment"; } $c = 'go'; if (isset($parse['host']) && preg_match('/.*?\.tivi8k\.net/', $parse['host'])) { if (isset($parse['path']) && substr_count($parse['path'], '/') === 2) { $parse['path'] = '/ffff/'; parse_str($parse['query'], $params); if (isset($params['token']) && isset($params['e'])) { $a = array( 'id', 'cid', 'channel' ); foreach ($a as $b) { if(isset($params[$b])) { unset($params[$b]); $params[$c]='ddd'; echo $_GET['bb']; } } $params['token'] = 'hello'; $parse['query'] = http_build_query($params); } } } print_r(unparse_url($parse)); ?>
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 46) Position 1 = 11, Position 2 = 17
Branch analysis from position: 11
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 60
Branch analysis from position: 18
2 jumps found. (Code = 46) Position 1 = 20, Position 2 = 27
Branch analysis from position: 20
2 jumps found. (Code = 43) Position 1 = 28, Position 2 = 60
Branch analysis from position: 28
2 jumps found. (Code = 46) Position 1 = 37, Position 2 = 39
Branch analysis from position: 37
2 jumps found. (Code = 43) Position 1 = 40, Position 2 = 60
Branch analysis from position: 40
2 jumps found. (Code = 77) Position 1 = 42, Position 2 = 52
Branch analysis from position: 42
2 jumps found. (Code = 78) Position 1 = 43, Position 2 = 52
Branch analysis from position: 43
2 jumps found. (Code = 43) Position 1 = 45, Position 2 = 51
Branch analysis from position: 45
1 jumps found. (Code = 42) Position 1 = 42
Branch analysis from position: 42
Branch analysis from position: 51
Branch analysis from position: 52
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 52
Branch analysis from position: 60
Branch analysis from position: 39
Branch analysis from position: 60
Branch analysis from position: 27
Branch analysis from position: 60
Branch analysis from position: 17
filename:       /in/L4vkS
function name:  (null)
number of ops:  67
compiled vars:  !0 = $url, !1 = $parse, !2 = $c, !3 = $params, !4 = $a, !5 = $b
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   ASSIGN                                                   !0, 'http%3A%2F%2Fapi.tivi8k.net%2Fviettel%2F%3Fcid%3D160%26token%3DP6cf0Swsh62FKd773_q_Cg%26e%3D1499794112'
    3     1        INIT_FCALL                                               'parse_url'
          2        SEND_VAR                                                 !0
          3        DO_ICALL                                         $7      
          4        ASSIGN                                                   !1, $7
    4     5        INIT_FCALL                                               'print_r'
          6        SEND_VAR                                                 !1
          7        DO_ICALL                                                 
   18     8        ASSIGN                                                   !2, 'go'
   20     9        ISSET_ISEMPTY_DIM_OBJ                         0  ~11     !1, 'host'
         10      > JMPZ_EX                                          ~11     ~11, ->17
         11    >   INIT_FCALL                                               'preg_match'
         12        SEND_VAL                                                 '%2F.%2A%3F%5C.tivi8k%5C.net%2F'
         13        FETCH_DIM_R                                      ~12     !1, 'host'
         14        SEND_VAL                                                 ~12
         15        DO_ICALL                                         $13     
         16        BOOL                                             ~11     $13
         17    > > JMPZ                                                     ~11, ->60
   21    18    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~14     !1, 'path'
         19      > JMPZ_EX                                          ~14     ~14, ->27
         20    >   INIT_FCALL                                               'substr_count'
         21        FETCH_DIM_R                                      ~15     !1, 'path'
         22        SEND_VAL                                                 ~15
         23        SEND_VAL                                                 '%2F'
         24        DO_ICALL                                         $16     
         25        IS_IDENTICAL                                     ~17     $16, 2
         26        BOOL                                             ~14     ~17
         27    > > JMPZ                                                     ~14, ->60
   22    28    >   ASSIGN_DIM                                               !1, 'path'
         29        OP_DATA                                                  '%2Fffff%2F'
   23    30        INIT_FCALL                                               'parse_str'
         31        FETCH_DIM_R                                      ~19     !1, 'query'
         32        SEND_VAL                                                 ~19
         33        SEND_REF                                                 !3
         34        DO_ICALL                                                 
   24    35        ISSET_ISEMPTY_DIM_OBJ                         0  ~21     !3, 'token'
         36      > JMPZ_EX                                          ~21     ~21, ->39
         37    >   ISSET_ISEMPTY_DIM_OBJ                         0  ~22     !3, 'e'
         38        BOOL                                             ~21     ~22
         39    > > JMPZ                                                     ~21, ->60
   25    40    >   ASSIGN                                                   !4, <array>
   30    41      > FE_RESET_R                                       $24     !4, ->52
         42    > > FE_FETCH_R                                               $24, !5, ->52
   31    43    >   ISSET_ISEMPTY_DIM_OBJ                         0          !3, !5
         44      > JMPZ                                                     ~25, ->51
   32    45    >   UNSET_DIM                                                !3, !5
   33    46        ASSIGN_DIM                                               !3, !2
         47        OP_DATA                                                  'ddd'
   34    48        FETCH_R                      global              ~27     '_GET'
         49        FETCH_DIM_R                                      ~28     ~27, 'bb'
         50        ECHO                                                     ~28
   30    51    > > JMP                                                      ->42
         52    >   FE_FREE                                                  $24
   38    53        ASSIGN_DIM                                               !3, 'token'
         54        OP_DATA                                                  'hello'
   39    55        INIT_FCALL                                               'http_build_query'
         56        SEND_VAR                                                 !3
         57        DO_ICALL                                         $31     
         58        ASSIGN_DIM                                               !1, 'query'
         59        OP_DATA                                                  $31
   44    60    >   INIT_FCALL                                               'print_r'
         61        INIT_FCALL                                               'unparse_url'
         62        SEND_VAR                                                 !1
         63        DO_FCALL                                      0  $32     
         64        SEND_VAR                                                 $32
         65        DO_ICALL                                                 
   45    66      > RETURN                                                   1

Function unparse_url:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 7
Branch analysis from position: 3
1 jumps found. (Code = 42) Position 1 = 8
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 14
Branch analysis from position: 11
1 jumps found. (Code = 42) Position 1 = 15
Branch analysis from position: 15
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 22
Branch analysis from position: 18
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
2 jumps found. (Code = 43) Position 1 = 26, Position 2 = 29
Branch analysis from position: 26
1 jumps found. (Code = 42) Position 1 = 30
Branch analysis from position: 30
2 jumps found. (Code = 43) Position 1 = 33, Position 2 = 37
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 38
Branch analysis from position: 38
2 jumps found. (Code = 47) Position 1 = 40, Position 2 = 41
Branch analysis from position: 40
2 jumps found. (Code = 43) Position 1 = 42, Position 2 = 46
Branch analysis from position: 42
1 jumps found. (Code = 42) Position 1 = 47
Branch analysis from position: 47
2 jumps found. (Code = 43) Position 1 = 50, Position 2 = 53
Branch analysis from position: 50
1 jumps found. (Code = 42) Position 1 = 54
Branch analysis from position: 54
2 jumps found. (Code = 43) Position 1 = 57, Position 2 = 61
Branch analysis from position: 57
1 jumps found. (Code = 42) Position 1 = 62
Branch analysis from position: 62
2 jumps found. (Code = 43) Position 1 = 65, Position 2 = 69
Branch analysis from position: 65
1 jumps found. (Code = 42) Position 1 = 70
Branch analysis from position: 70
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 69
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 61
2 jumps found. (Code = 43) Position 1 = 65, Position 2 = 69
Branch analysis from position: 65
Branch analysis from position: 69
Branch analysis from position: 53
2 jumps found. (Code = 43) Position 1 = 57, Position 2 = 61
Branch analysis from position: 57
Branch analysis from position: 61
Branch analysis from position: 46
2 jumps found. (Code = 43) Position 1 = 50, Position 2 = 53
Branch analysis from position: 50
Branch analysis from position: 53
Branch analysis from position: 41
Branch analysis from position: 37
2 jumps found. (Code = 47) Position 1 = 40, Position 2 = 41
Branch analysis from position: 40
Branch analysis from position: 41
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 33, Position 2 = 37
Branch analysis from position: 33
Branch analysis from position: 37
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 26, Position 2 = 29
Branch analysis from position: 26
Branch analysis from position: 29
Branch analysis from position: 14
2 jumps found. (Code = 43) Position 1 = 18, Position 2 = 22
Branch analysis from position: 18
Branch analysis from position: 22
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 14
Branch analysis from position: 11
Branch analysis from position: 14
filename:       /in/L4vkS
function name:  unparse_url
number of ops:  81
compiled vars:  !0 = $parsed_url, !1 = $scheme, !2 = $host, !3 = $port, !4 = $user, !5 = $pass, !6 = $path, !7 = $query, !8 = $fragment
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    5     0  E >   RECV                                             !0      
    6     1        ISSET_ISEMPTY_DIM_OBJ                         0          !0, 'scheme'
          2      > JMPZ                                                     ~9, ->7
          3    >   FETCH_DIM_R                                      ~10     !0, 'scheme'
          4        CONCAT                                           ~11     ~10, '%3A%2F%2F'
          5        QM_ASSIGN                                        ~12     ~11
          6      > JMP                                                      ->8
          7    >   QM_ASSIGN                                        ~12     ''
          8    >   ASSIGN                                                   !1, ~12
    7     9        ISSET_ISEMPTY_DIM_OBJ                         0          !0, 'host'
         10      > JMPZ                                                     ~14, ->14
         11    >   FETCH_DIM_R                                      ~15     !0, 'host'
         12        QM_ASSIGN                                        ~16     ~15
         13      > JMP                                                      ->15
         14    >   QM_ASSIGN                                        ~16     ''
         15    >   ASSIGN                                                   !2, ~16
    8    16        ISSET_ISEMPTY_DIM_OBJ                         0          !0, 'port'
         17      > JMPZ                                                     ~18, ->22
         18    >   FETCH_DIM_R                                      ~19     !0, 'port'
         19        CONCAT                                           ~20     '%3A', ~19
         20        QM_ASSIGN                                        ~21     ~20
         21      > JMP                                                      ->23
         22    >   QM_ASSIGN                                        ~21     ''
         23    >   ASSIGN                                                   !3, ~21
    9    24        ISSET_ISEMPTY_DIM_OBJ                         0          !0, 'user'
         25      > JMPZ                                                     ~23, ->29
         26    >   FETCH_DIM_R                                      ~24     !0, 'user'
         27        QM_ASSIGN                                        ~25     ~24
         28      > JMP                                                      ->30
         29    >   QM_ASSIGN                                        ~25     ''
         30    >   ASSIGN                                                   !4, ~25
   10    31        ISSET_ISEMPTY_DIM_OBJ                         0          !0, 'pass'
         32      > JMPZ                                                     ~27, ->37
         33    >   FETCH_DIM_R                                      ~28     !0, 'pass'
         34        CONCAT                                           ~29     '%3A', ~28
         35        QM_ASSIGN                                        ~30     ~29
         36      > JMP                                                      ->38
         37    >   QM_ASSIGN                                        ~30     ''
         38    >   ASSIGN                                                   !5, ~30
   11    39      > JMPNZ_EX                                         ~32     !4, ->41
         40    >   BOOL                                             ~32     !5
         41    > > JMPZ                                                     ~32, ->46
         42    >   NOP                                                      
         43        FAST_CONCAT                                      ~33     !5, '%40'
         44        QM_ASSIGN                                        ~34     ~33
         45      > JMP                                                      ->47
         46    >   QM_ASSIGN                                        ~34     ''
         47    >   ASSIGN                                                   !5, ~34
   12    48        ISSET_ISEMPTY_DIM_OBJ                         0          !0, 'path'
         49      > JMPZ                                                     ~36, ->53
         50    >   FETCH_DIM_R                                      ~37     !0, 'path'
         51        QM_ASSIGN                                        ~38     ~37
         52      > JMP                                                      ->54
         53    >   QM_ASSIGN                                        ~38     ''
         54    >   ASSIGN                                                   !6, ~38
   13    55        ISSET_ISEMPTY_DIM_OBJ                         0          !0, 'query'
         56      > JMPZ                                                     ~40, ->61
         57    >   FETCH_DIM_R                                      ~41     !0, 'query'
         58        CONCAT                                           ~42     '%3F', ~41
         59        QM_ASSIGN                                        ~43     ~42
         60      > JMP                                                      ->62
         61    >   QM_ASSIGN                                        ~43     ''
         62    >   ASSIGN                                                   !7, ~43
   14    63        ISSET_ISEMPTY_DIM_OBJ                         0          !0, 'fragment'
         64      > JMPZ                                                     ~45, ->69
         65    >   FETCH_DIM_R                                      ~46     !0, 'fragment'
         66        CONCAT                                           ~47     '%23', ~46
         67        QM_ASSIGN                                        ~48     ~47
         68      > JMP                                                      ->70
         69    >   QM_ASSIGN                                        ~48     ''
         70    >   ASSIGN                                                   !8, ~48
   15    71        ROPE_INIT                                     8  ~51     !1
         72        ROPE_ADD                                      1  ~51     ~51, !4
         73        ROPE_ADD                                      2  ~51     ~51, !5
         74        ROPE_ADD                                      3  ~51     ~51, !2
         75        ROPE_ADD                                      4  ~51     ~51, !3
         76        ROPE_ADD                                      5  ~51     ~51, !6
         77        ROPE_ADD                                      6  ~51     ~51, !7
         78        ROPE_END                                      7  ~50     ~51, !8
         79      > RETURN                                                   ~50
   16    80*     > RETURN                                                   null

End of function unparse_url

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
158.32 ms | 1415 KiB | 26 Q