3v4l.org

run code in 300+ PHP versions simultaneously
<?php $addr = "http://example.com/?foo=bar&utm_source=google&pk_rdm=1235#2&utm_medium=cpc&utm_campaign=auchan-fil_rouge"; $xmlstr = <<<XML <xml> <medium val="organic"> <source val=""> <campaign val=""> <lever3 val="seo">foo</lever3> <lever2 val="seo">bar</lever2> <lever1 val="trafic_gratuit" /> </campaign> </source> </medium> <medium val="cpc"> <source val=""> <campaign val="remarketing"> <lever3 val="sem-remarketing" /> <lever2 val="sem" /> <lever1 val="trafic_payant" /> </campaign> </source> <source val="leguide"> <campaign val=""> <lever3 val="comparateur-leguide" /> <lever2 val="comparateur" /> <lever1 val="trafic_payant" /> </campaign> </source> <source val="google"> <campaign val="marque"> <lever3 val="sem-marque-google" /> <lever2 val="sem" /> <lever1 val="trafic_payant" /> </campaign> <campaign val="auchan-fil_rouge"> <lever3 val="sem-marque-google" /> <lever2 val="sem" /> <lever1 val="trafic_payant" /> </campaign> <campaign val="horsmarque"> <lever3 val="sem-hors-marque-google" /> <lever2 val="sem" /> <lever1 val="trafic_payant" /> </campaign> </source> <source val="bing"> <campaign val="auchan-fil_rouge"> <lever3 val="sem-marque-yahoo_bing" /> <lever2 val="sem" /> <lever1 val="trafic_payant" /> </campaign> <campaign val="marque"> <lever3 val="sem-marque-yahoo_bing"/> <lever2 val="sem" /> <lever1 val="trafic_payant" /> </campaign> <campaign val="horsmarque"> <lever3 val="sem-horsmarque-yahoo_bing"/> <lever2 val="sem" /> <lever1 val="trafic_payant" /> </campaign> </source> </medium> <medium val="cpa"> <source val="affilinet"> <campaign val=""> <lever3 val="affiliation" /> <lever2 val="affiliation" /> <lever1 val="trafic_payant" /> </campaign> </source> </medium> </xml> XML; $xml = new SimpleXMLElement($xmlstr); // Parse the url. $results = explode("&", explode("?", $addr)[1]); $tags = array ('utm_medium=', 'utm_source=', 'utm_campaign='); foreach($results as $result){ foreach($tags as $key => $tag) { if (($offset = stripos($result, $tag)) !== false) $visitorInfo["$tableName[$key]"] = substr($result, strlen($tag)); } } $results = $xml->xpath("//medium[@val='{$medium_val}']/source[@val='{$source_val}']/campaign[@val='{$campaign_val}']/*"); $leviers = array("levier3", "levier2", "levier1"); echo $results[0]->attributes(); //print_r($results); foreach ($results as $key => $result) { echo " {$leviers[$key]} => {$result->attributes()}\n"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 18, Position 2 = 41
Branch analysis from position: 18
2 jumps found. (Code = 78) Position 1 = 19, Position 2 = 41
Branch analysis from position: 19
2 jumps found. (Code = 77) Position 1 = 20, Position 2 = 39
Branch analysis from position: 20
2 jumps found. (Code = 78) Position 1 = 21, Position 2 = 39
Branch analysis from position: 21
2 jumps found. (Code = 43) Position 1 = 29, Position 2 = 38
Branch analysis from position: 29
1 jumps found. (Code = 42) Position 1 = 20
Branch analysis from position: 20
Branch analysis from position: 38
Branch analysis from position: 39
1 jumps found. (Code = 42) Position 1 = 18
Branch analysis from position: 18
Branch analysis from position: 39
Branch analysis from position: 41
2 jumps found. (Code = 77) Position 1 = 59, Position 2 = 71
Branch analysis from position: 59
2 jumps found. (Code = 78) Position 1 = 60, Position 2 = 71
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 59
Branch analysis from position: 59
Branch analysis from position: 71
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 71
Branch analysis from position: 41
filename:       /in/NRQJq
function name:  (null)
number of ops:  73
compiled vars:  !0 = $addr, !1 = $xmlstr, !2 = $xml, !3 = $results, !4 = $tags, !5 = $result, !6 = $tag, !7 = $key, !8 = $offset, !9 = $visitorInfo, !10 = $tableName, !11 = $medium_val, !12 = $source_val, !13 = $campaign_val, !14 = $leviers
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, 'http%3A%2F%2Fexample.com%2F%3Ffoo%3Dbar%26utm_source%3Dgoogle%26pk_rdm%3D1235%232%26utm_medium%3Dcpc%26utm_campaign%3Dauchan-fil_rouge'
    5     1        ASSIGN                                                   !1, '%3Cxml%3E%0A++++%3Cmedium+val%3D%22organic%22%3E%0A++++++++%3Csource+val%3D%22%22%3E%0A++++++++++++%3Ccampaign+val%3D%22%22%3E%0A%09%09%09%09%3Clever3+val%3D%22seo%22%3Efoo%3C%2Flever3%3E%0A%09%09%09%09%3Clever2+val%3D%22seo%22%3Ebar%3C%2Flever2%3E%0A++++++++++++++++%3Clever1+val%3D%22trafic_gratuit%22+%2F%3E%0A++++++++++++%3C%2Fcampaign%3E%0A++++++++%3C%2Fsource%3E%0A++++%3C%2Fmedium%3E%0A%0A%09%3Cmedium+val%3D%22cpc%22%3E%0A++++++++%3Csource+val%3D%22%22%3E%0A++++++++++++%3Ccampaign+val%3D%22remarketing%22%3E%0A++++++++++++++++%3Clever3+val%3D%22sem-remarketing%22+%2F%3E%0A++++++++++++++++%3Clever2+val%3D%22sem%22+%2F%3E%0A++++++++++++++++%3Clever1+val%3D%22trafic_payant%22+%2F%3E%0A++++++++++++%3C%2Fcampaign%3E%0A++++++++%3C%2Fsource%3E%0A++++++++%3Csource+val%3D%22leguide%22%3E%0A++++++++++++%3Ccampaign+val%3D%22%22%3E%0A++++++++++++++++%3Clever3+val%3D%22comparateur-leguide%22+%2F%3E%0A++++++++++++++++%3Clever2+val%3D%22comparateur%22+%2F%3E%0A++++++++++++++++%3Clever1+val%3D%22trafic_payant%22+%2F%3E%0A++++++++++++%3C%2Fcampaign%3E%0A++++++++%3C%2Fsource%3E%0A++++++++%3Csource+val%3D%22google%22%3E%0A++++++++++++%3Ccampaign+val%3D%22marque%22%3E%0A++++++++++++++++%3Clever3+val%3D%22sem-marque-google%22+%2F%3E%0A++++++++++++++++%3Clever2+val%3D%22sem%22+%2F%3E%0A++++++++++++++++%3Clever1+val%3D%22trafic_payant%22+%2F%3E%0A++++++++++++%3C%2Fcampaign%3E%0A++++++++++++%3Ccampaign+val%3D%22auchan-fil_rouge%22%3E%0A++++++++++++++++%3Clever3+val%3D%22sem-marque-google%22+%2F%3E%0A++++++++++++++++%3Clever2+val%3D%22sem%22+%2F%3E%0A++++++++++++++++%3Clever1+val%3D%22trafic_payant%22+%2F%3E%0A++++++++++++%3C%2Fcampaign%3E%0A++++++++++++%3Ccampaign+val%3D%22horsmarque%22%3E%0A++++++++++++++++%3Clever3+val%3D%22sem-hors-marque-google%22+%2F%3E%0A++++++++++++++++%3Clever2+val%3D%22sem%22+%2F%3E%0A++++++++++++++++%3Clever1+val%3D%22trafic_payant%22+%2F%3E%0A++++++++++++%3C%2Fcampaign%3E%0A++++++++%3C%2Fsource%3E%0A++++++++%3Csource+val%3D%22bing%22%3E%0A++++++++++++%3Ccampaign+val%3D%22auchan-fil_rouge%22%3E%0A++++++++++++++++%3Clever3+val%3D%22sem-marque-yahoo_bing%22+%2F%3E%0A++++++++++++++++%3Clever2+val%3D%22sem%22+%2F%3E%0A++++++++++++++++%3Clever1+val%3D%22trafic_payant%22+%2F%3E%0A++++++++++++%3C%2Fcampaign%3E%0A++++++++++++%3Ccampaign+val%3D%22marque%22%3E%0A++++++++++++++++%3Clever3+val%3D%22sem-marque-yahoo_bing%22%2F%3E%0A++++++++++++++++%3Clever2+val%3D%22sem%22+%2F%3E%0A++++++++++++++++%3Clever1+val%3D%22trafic_payant%22+%2F%3E%0A++++++++++++%3C%2Fcampaign%3E%0A++++++++++++%3Ccampaign+val%3D%22horsmarque%22%3E%0A++++++++++++++++%3Clever3+val%3D%22sem-horsmarque-yahoo_bing%22%2F%3E%0A++++++++++++++++%3Clever2+val%3D%22sem%22+%2F%3E%0A++++++++++++++++%3Clever1+val%3D%22trafic_payant%22+%2F%3E%0A++++++++++++%3C%2Fcampaign%3E%0A++++++++%3C%2Fsource%3E%0A%09%3C%2Fmedium%3E%0A%0A%09%3Cmedium+val%3D%22cpa%22%3E%0A%09%09%3Csource+val%3D%22affilinet%22%3E%0A%09%09%09%3Ccampaign+val%3D%22%22%3E%0A%09%09%09%09%3Clever3+val%3D%22affiliation%22+%2F%3E%0A%09%09%09%09%3Clever2+val%3D%22affiliation%22+%2F%3E%0A%09%09%09%09%3Clever1+val%3D%22trafic_payant%22+%2F%3E%0A%09%09%09%3C%2Fcampaign%3E%0A%09%09%3C%2Fsource%3E%0A%09%3C%2Fmedium%3E%0A%3C%2Fxml%3E'
   80     2        NEW                                              $17     'SimpleXMLElement'
          3        SEND_VAR_EX                                              !1
          4        DO_FCALL                                      0          
          5        ASSIGN                                                   !2, $17
   83     6        INIT_FCALL                                               'explode'
          7        SEND_VAL                                                 '%26'
          8        INIT_FCALL                                               'explode'
          9        SEND_VAL                                                 '%3F'
         10        SEND_VAR                                                 !0
         11        DO_ICALL                                         $20     
         12        FETCH_DIM_R                                      ~21     $20, 1
         13        SEND_VAL                                                 ~21
         14        DO_ICALL                                         $22     
         15        ASSIGN                                                   !3, $22
   84    16        ASSIGN                                                   !4, <array>
   86    17      > FE_RESET_R                                       $25     !3, ->41
         18    > > FE_FETCH_R                                               $25, !5, ->41
   87    19    > > FE_RESET_R                                       $26     !4, ->39
         20    > > FE_FETCH_R                                       ~27     $26, !6, ->39
         21    >   ASSIGN                                                   !7, ~27
   88    22        INIT_FCALL                                               'stripos'
         23        SEND_VAR                                                 !5
         24        SEND_VAR                                                 !6
         25        DO_ICALL                                         $29     
         26        ASSIGN                                           ~30     !8, $29
         27        TYPE_CHECK                                  1018          ~30
         28      > JMPZ                                                     ~31, ->38
   90    29    >   FETCH_DIM_R                                      ~32     !10, !7
         30        CAST                                          6  ~33     ~32
         31        INIT_FCALL                                               'substr'
         32        SEND_VAR                                                 !5
         33        STRLEN                                           ~35     !6
         34        SEND_VAL                                                 ~35
         35        DO_ICALL                                         $36     
         36        ASSIGN_DIM                                               !9, ~33
         37        OP_DATA                                                  $36
   87    38    > > JMP                                                      ->20
         39    >   FE_FREE                                                  $26
   86    40      > JMP                                                      ->18
         41    >   FE_FREE                                                  $25
   94    42        INIT_METHOD_CALL                                         !2, 'xpath'
         43        ROPE_INIT                                     7  ~38     '%2F%2Fmedium%5B%40val%3D%27'
         44        ROPE_ADD                                      1  ~38     ~38, !11
         45        ROPE_ADD                                      2  ~38     ~38, '%27%5D%2Fsource%5B%40val%3D%27'
         46        ROPE_ADD                                      3  ~38     ~38, !12
         47        ROPE_ADD                                      4  ~38     ~38, '%27%5D%2Fcampaign%5B%40val%3D%27'
         48        ROPE_ADD                                      5  ~38     ~38, !13
         49        ROPE_END                                      6  ~37     ~38, '%27%5D%2F%2A'
         50        SEND_VAL_EX                                              ~37
         51        DO_FCALL                                      0  $42     
         52        ASSIGN                                                   !3, $42
   95    53        ASSIGN                                                   !14, <array>
   97    54        FETCH_DIM_R                                      ~45     !3, 0
         55        INIT_METHOD_CALL                                         ~45, 'attributes'
         56        DO_FCALL                                      0  $46     
         57        ECHO                                                     $46
  101    58      > FE_RESET_R                                       $47     !3, ->71
         59    > > FE_FETCH_R                                       ~48     $47, !5, ->71
         60    >   ASSIGN                                                   !7, ~48
  102    61        ROPE_INIT                                     5  ~53     '+'
         62        FETCH_DIM_R                                      ~50     !14, !7
         63        ROPE_ADD                                      1  ~53     ~53, ~50
         64        ROPE_ADD                                      2  ~53     ~53, '+%3D%3E+'
         65        INIT_METHOD_CALL                                         !5, 'attributes'
         66        DO_FCALL                                      0  $51     
         67        ROPE_ADD                                      3  ~53     ~53, $51
         68        ROPE_END                                      4  ~52     ~53, '%0A'
         69        ECHO                                                     ~52
  101    70      > JMP                                                      ->59
         71    >   FE_FREE                                                  $47
  103    72      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
165.75 ms | 1404 KiB | 19 Q