3v4l.org

run code in 300+ PHP versions simultaneously
<?php function getSocialUser( $uri ) { $parsed = parse_url( $uri ); $path = $parsed[ 'path' ];// Usuário, mas com alguns caracteres que devem ser filtrados $host = str_replace( 'www.', '', $parsed[ 'host' ] );// Retiramos o 'www.' $host_name = explode( '.', $host )[ 0 ];// Separamos pelo '.' e pegamos a primeira parte $allowed_hosts = [ 'twitter', 'facebook', 'instagram' ];// Hosts permitidos if ( !in_array( $host_name, $allowed_hosts ) ) return false;// Se não estiver entre os permitidos, retorne falso (ou exception) return strtok( ltrim( $path, '/' ), '/' ); } $url1 = 'https://www.facebook.com/gilberto.gil'; $url2 = 'http://instagram.com/gilberto.gil/posts'; $url3 = 'https://twitter.com/gilberto.gil?parametro_qualquer=123'; $url4 = 'https://google.com/gilberto.gil?parametro_qualquer=123'; echo ( getSocialUser( $url1 ) ?: 'Inválido' ) . "\n"; echo ( getSocialUser( $url2 ) ?: 'Inválido' ) . "\n"; echo ( getSocialUser( $url3 ) ?: 'Inválido' ) . "\n"; echo ( getSocialUser( $url4 ) ?: 'Inválido' ) . "\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Uib0j
function name:  (null)
number of ops:  33
compiled vars:  !0 = $url1, !1 = $url2, !2 = $url3, !3 = $url4
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   16     0  E >   ASSIGN                                                   !0, 'https%3A%2F%2Fwww.facebook.com%2Fgilberto.gil'
   17     1        ASSIGN                                                   !1, 'http%3A%2F%2Finstagram.com%2Fgilberto.gil%2Fposts'
   18     2        ASSIGN                                                   !2, 'https%3A%2F%2Ftwitter.com%2Fgilberto.gil%3Fparametro_qualquer%3D123'
   19     3        ASSIGN                                                   !3, 'https%3A%2F%2Fgoogle.com%2Fgilberto.gil%3Fparametro_qualquer%3D123'
   21     4        INIT_FCALL                                               'getsocialuser'
          5        SEND_VAR                                                 !0
          6        DO_FCALL                                      0  $8      
          7        JMP_SET                                          ~9      $8, ->9
          8        QM_ASSIGN                                        ~9      'Inv%C3%A1lido'
          9        CONCAT                                           ~10     ~9, '%0A'
         10        ECHO                                                     ~10
   22    11        INIT_FCALL                                               'getsocialuser'
         12        SEND_VAR                                                 !1
         13        DO_FCALL                                      0  $11     
         14        JMP_SET                                          ~12     $11, ->16
         15        QM_ASSIGN                                        ~12     'Inv%C3%A1lido'
         16        CONCAT                                           ~13     ~12, '%0A'
         17        ECHO                                                     ~13
   23    18        INIT_FCALL                                               'getsocialuser'
         19        SEND_VAR                                                 !2
         20        DO_FCALL                                      0  $14     
         21        JMP_SET                                          ~15     $14, ->23
         22        QM_ASSIGN                                        ~15     'Inv%C3%A1lido'
         23        CONCAT                                           ~16     ~15, '%0A'
         24        ECHO                                                     ~16
   24    25        INIT_FCALL                                               'getsocialuser'
         26        SEND_VAR                                                 !3
         27        DO_FCALL                                      0  $17     
         28        JMP_SET                                          ~18     $17, ->30
         29        QM_ASSIGN                                        ~18     'Inv%C3%A1lido'
         30        CONCAT                                           ~19     ~18, '%0A'
         31        ECHO                                                     ~19
         32      > RETURN                                                   1

Function getsocialuser:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 27, Position 2 = 28
Branch analysis from position: 27
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 28
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/Uib0j
function name:  getSocialUser
number of ops:  38
compiled vars:  !0 = $uri, !1 = $parsed, !2 = $path, !3 = $host, !4 = $host_name, !5 = $allowed_hosts
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
    3     1        INIT_FCALL                                               'parse_url'
          2        SEND_VAR                                                 !0
          3        DO_ICALL                                         $6      
          4        ASSIGN                                                   !1, $6
    4     5        FETCH_DIM_R                                      ~8      !1, 'path'
          6        ASSIGN                                                   !2, ~8
    6     7        INIT_FCALL                                               'str_replace'
          8        SEND_VAL                                                 'www.'
          9        SEND_VAL                                                 ''
         10        FETCH_DIM_R                                      ~10     !1, 'host'
         11        SEND_VAL                                                 ~10
         12        DO_ICALL                                         $11     
         13        ASSIGN                                                   !3, $11
    7    14        INIT_FCALL                                               'explode'
         15        SEND_VAL                                                 '.'
         16        SEND_VAR                                                 !3
         17        DO_ICALL                                         $13     
         18        FETCH_DIM_R                                      ~14     $13, 0
         19        ASSIGN                                                   !4, ~14
    9    20        ASSIGN                                                   !5, <array>
   10    21        INIT_FCALL                                               'in_array'
         22        SEND_VAR                                                 !4
         23        SEND_VAR                                                 !5
         24        DO_ICALL                                         $17     
         25        BOOL_NOT                                         ~18     $17
         26      > JMPZ                                                     ~18, ->28
   11    27    > > RETURN                                                   <false>
   13    28    >   INIT_FCALL                                               'strtok'
         29        INIT_FCALL                                               'ltrim'
         30        SEND_VAR                                                 !2
         31        SEND_VAL                                                 '%2F'
         32        DO_ICALL                                         $19     
         33        SEND_VAR                                                 $19
         34        SEND_VAL                                                 '%2F'
         35        DO_ICALL                                         $20     
         36      > RETURN                                                   $20
   14    37*     > RETURN                                                   null

End of function getsocialuser

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
219.94 ms | 1403 KiB | 29 Q