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='); $sources = array('medium_val' => '', 'source_val' => '','campaing_val' => ''); foreach($results as $result){ foreach($tags as $key => $tag) { if (($offset = stripos($result, $tag)) !== false) $sources[$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(); //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 = 19, Position 2 = 40
Branch analysis from position: 19
2 jumps found. (Code = 78) Position 1 = 20, Position 2 = 40
Branch analysis from position: 20
2 jumps found. (Code = 77) Position 1 = 21, Position 2 = 38
Branch analysis from position: 21
2 jumps found. (Code = 78) Position 1 = 22, Position 2 = 38
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 30, Position 2 = 37
Branch analysis from position: 30
1 jumps found. (Code = 42) Position 1 = 21
Branch analysis from position: 21
Branch analysis from position: 37
Branch analysis from position: 38
1 jumps found. (Code = 42) Position 1 = 19
Branch analysis from position: 19
Branch analysis from position: 38
Branch analysis from position: 40
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 40
filename:       /in/fecJb
function name:  (null)
number of ops:  58
compiled vars:  !0 = $addr, !1 = $xmlstr, !2 = $xml, !3 = $results, !4 = $tags, !5 = $sources, !6 = $result, !7 = $tag, !8 = $key, !9 = $offset, !10 = $medium_val, !11 = $source_val, !12 = $campaign_val, !13 = $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                                              $16     'SimpleXMLElement'
          3        SEND_VAR_EX                                              !1
          4        DO_FCALL                                      0          
          5        ASSIGN                                                   !2, $16
   83     6        INIT_FCALL                                               'explode'
          7        SEND_VAL                                                 '%26'
          8        INIT_FCALL                                               'explode'
          9        SEND_VAL                                                 '%3F'
         10        SEND_VAR                                                 !0
         11        DO_ICALL                                         $19     
         12        FETCH_DIM_R                                      ~20     $19, 1
         13        SEND_VAL                                                 ~20
         14        DO_ICALL                                         $21     
         15        ASSIGN                                                   !3, $21
   84    16        ASSIGN                                                   !4, <array>
   85    17        ASSIGN                                                   !5, <array>
   87    18      > FE_RESET_R                                       $25     !3, ->40
         19    > > FE_FETCH_R                                               $25, !6, ->40
   88    20    > > FE_RESET_R                                       $26     !4, ->38
         21    > > FE_FETCH_R                                       ~27     $26, !7, ->38
         22    >   ASSIGN                                                   !8, ~27
   89    23        INIT_FCALL                                               'stripos'
         24        SEND_VAR                                                 !6
         25        SEND_VAR                                                 !7
         26        DO_ICALL                                         $29     
         27        ASSIGN                                           ~30     !9, $29
         28        TYPE_CHECK                                  1018          ~30
         29      > JMPZ                                                     ~31, ->37
   91    30    >   INIT_FCALL                                               'substr'
         31        SEND_VAR                                                 !6
         32        STRLEN                                           ~33     !7
         33        SEND_VAL                                                 ~33
         34        DO_ICALL                                         $34     
         35        ASSIGN_DIM                                               !5, !8
         36        OP_DATA                                                  $34
   88    37    > > JMP                                                      ->21
         38    >   FE_FREE                                                  $26
   87    39      > JMP                                                      ->19
         40    >   FE_FREE                                                  $25
   95    41        INIT_METHOD_CALL                                         !2, 'xpath'
         42        ROPE_INIT                                     7  ~36     '%2F%2Fmedium%5B%40val%3D%27'
         43        ROPE_ADD                                      1  ~36     ~36, !10
         44        ROPE_ADD                                      2  ~36     ~36, '%27%5D%2Fsource%5B%40val%3D%27'
         45        ROPE_ADD                                      3  ~36     ~36, !11
         46        ROPE_ADD                                      4  ~36     ~36, '%27%5D%2Fcampaign%5B%40val%3D%27'
         47        ROPE_ADD                                      5  ~36     ~36, !12
         48        ROPE_END                                      6  ~35     ~36, '%27%5D%2F%2A'
         49        SEND_VAL_EX                                              ~35
         50        DO_FCALL                                      0  $40     
         51        ASSIGN                                                   !3, $40
   96    52        ASSIGN                                                   !13, <array>
   98    53        FETCH_DIM_R                                      ~43     !3, 0
         54        INIT_METHOD_CALL                                         ~43, 'attributes'
         55        DO_FCALL                                      0  $44     
         56        ECHO                                                     $44
  104    57      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
152.58 ms | 1404 KiB | 19 Q