3v4l.org

run code in 300+ PHP versions simultaneously
<?php $m3u = '#EXTM3U #EXTINF:-1 tvg-name="Canal 26" tvg-logo="https://demo.com/xDjOUuz.png" group-title="Argentina", https://demolivevideo1.com/playlist.m3u8 #EXTINF:-1 tvg-name="LN" tvg-logo="https://demo2.com/vJYzGt1.png" group-title="Argentina", https://demolivevideo2.com/playlist.m3u8 #EXTINF:-1 tvg-name="ABC" tvg-logo="https://demo3.com/5CVl5EF.png" group-title="Australia", https://demolivevideo3.com/playlist.m3u8""" '; $newFile = '<?xml version="1.0" encoding="utf-8"?> <data></data> '; $doc = new DOMDocument(); $doc->loadXML($newFile); $xpath = new DOMXpath($doc); $destination = $xpath->query('/data'); $step1 = explode('#EXTINF:-1 ',str_replace('#EXTM3U','',$m3u)); $step2 = array_slice($step1,1); foreach ($step2 as $item) { $step3 = str_replace('" ','" xxx',explode(',', $item))[0]; $step4 = explode('xxx',$step3); $link = explode(',',$item)[1]; $params = []; foreach ($step4 as $step) { $param = explode('=',$step)[1]; array_push($params,$param); } $chan = " <channels> <name>{$params[0]}</name> <banner>{$params[1]}</banner> <url>{$link}</url> <country>{$params[2]}</country> </channels>"; $template = $doc->createDocumentFragment(); $template->appendXML($chan); $destination[0]->appendChild($template); }; echo $doc->saveXml();
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 32, Position 2 = 94
Branch analysis from position: 32
2 jumps found. (Code = 78) Position 1 = 33, Position 2 = 94
Branch analysis from position: 33
2 jumps found. (Code = 77) Position 1 = 57, Position 2 = 69
Branch analysis from position: 57
2 jumps found. (Code = 78) Position 1 = 58, Position 2 = 69
Branch analysis from position: 58
1 jumps found. (Code = 42) Position 1 = 57
Branch analysis from position: 57
Branch analysis from position: 69
1 jumps found. (Code = 42) Position 1 = 32
Branch analysis from position: 32
Branch analysis from position: 69
Branch analysis from position: 94
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 94
filename:       /in/H6O7p
function name:  (null)
number of ops:  99
compiled vars:  !0 = $m3u, !1 = $newFile, !2 = $doc, !3 = $xpath, !4 = $destination, !5 = $step1, !6 = $step2, !7 = $item, !8 = $step3, !9 = $step4, !10 = $link, !11 = $params, !12 = $step, !13 = $param, !14 = $chan, !15 = $template
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '%23EXTM3U%0A%23EXTINF%3A-1+tvg-name%3D%22Canal+26%22+tvg-logo%3D%22https%3A%2F%2Fdemo.com%2FxDjOUuz.png%22+group-title%3D%22Argentina%22%2C%0Ahttps%3A%2F%2Fdemolivevideo1.com%2Fplaylist.m3u8%0A%23EXTINF%3A-1+tvg-name%3D%22LN%22++tvg-logo%3D%22https%3A%2F%2Fdemo2.com%2FvJYzGt1.png%22+group-title%3D%22Argentina%22%2C%0Ahttps%3A%2F%2Fdemolivevideo2.com%2Fplaylist.m3u8%0A%23EXTINF%3A-1+tvg-name%3D%22ABC%22+tvg-logo%3D%22https%3A%2F%2Fdemo3.com%2F5CVl5EF.png%22+group-title%3D%22Australia%22%2C%0Ahttps%3A%2F%2Fdemolivevideo3.com%2Fplaylist.m3u8%22%22%22%0A'
   12     1        ASSIGN                                                   !1, '%3C%3Fxml+version%3D%221.0%22+encoding%3D%22utf-8%22%3F%3E%0A%3Cdata%3E%3C%2Fdata%3E%0A'
   16     2        NEW                                              $18     'DOMDocument'
          3        DO_FCALL                                      0          
          4        ASSIGN                                                   !2, $18
   17     5        INIT_METHOD_CALL                                         !2, 'loadXML'
          6        SEND_VAR_EX                                              !1
          7        DO_FCALL                                      0          
   18     8        NEW                                              $22     'DOMXpath'
          9        SEND_VAR_EX                                              !2
         10        DO_FCALL                                      0          
         11        ASSIGN                                                   !3, $22
   19    12        INIT_METHOD_CALL                                         !3, 'query'
         13        SEND_VAL_EX                                              '%2Fdata'
         14        DO_FCALL                                      0  $25     
         15        ASSIGN                                                   !4, $25
   21    16        INIT_FCALL                                               'explode'
         17        SEND_VAL                                                 '%23EXTINF%3A-1+'
         18        INIT_FCALL                                               'str_replace'
         19        SEND_VAL                                                 '%23EXTM3U'
         20        SEND_VAL                                                 ''
         21        SEND_VAR                                                 !0
         22        DO_ICALL                                         $27     
         23        SEND_VAR                                                 $27
         24        DO_ICALL                                         $28     
         25        ASSIGN                                                   !5, $28
   22    26        INIT_FCALL                                               'array_slice'
         27        SEND_VAR                                                 !5
         28        SEND_VAL                                                 1
         29        DO_ICALL                                         $30     
         30        ASSIGN                                                   !6, $30
   23    31      > FE_RESET_R                                       $32     !6, ->94
         32    > > FE_FETCH_R                                               $32, !7, ->94
   24    33    >   INIT_FCALL                                               'str_replace'
         34        SEND_VAL                                                 '%22+'
         35        SEND_VAL                                                 '%22+xxx'
         36        INIT_FCALL                                               'explode'
         37        SEND_VAL                                                 '%2C'
         38        SEND_VAR                                                 !7
         39        DO_ICALL                                         $33     
         40        SEND_VAR                                                 $33
         41        DO_ICALL                                         $34     
         42        FETCH_DIM_R                                      ~35     $34, 0
         43        ASSIGN                                                   !8, ~35
   25    44        INIT_FCALL                                               'explode'
         45        SEND_VAL                                                 'xxx'
         46        SEND_VAR                                                 !8
         47        DO_ICALL                                         $37     
         48        ASSIGN                                                   !9, $37
   26    49        INIT_FCALL                                               'explode'
         50        SEND_VAL                                                 '%2C'
         51        SEND_VAR                                                 !7
         52        DO_ICALL                                         $39     
         53        FETCH_DIM_R                                      ~40     $39, 1
         54        ASSIGN                                                   !10, ~40
   27    55        ASSIGN                                                   !11, <array>
   28    56      > FE_RESET_R                                       $43     !9, ->69
         57    > > FE_FETCH_R                                               $43, !12, ->69
   30    58    >   INIT_FCALL                                               'explode'
         59        SEND_VAL                                                 '%3D'
         60        SEND_VAR                                                 !12
         61        DO_ICALL                                         $44     
         62        FETCH_DIM_R                                      ~45     $44, 1
         63        ASSIGN                                                   !13, ~45
   31    64        INIT_FCALL                                               'array_push'
         65        SEND_REF                                                 !11
         66        SEND_VAR                                                 !13
         67        DO_ICALL                                                 
   28    68      > JMP                                                      ->57
         69    >   FE_FREE                                                  $43
   33    70        ROPE_INIT                                     9  ~52     '%0A++++%3Cchannels%3E%0A++++%3Cname%3E'
   35    71        FETCH_DIM_R                                      ~48     !11, 0
         72        ROPE_ADD                                      1  ~52     ~52, ~48
         73        ROPE_ADD                                      2  ~52     ~52, '%3C%2Fname%3E%0A++++%3Cbanner%3E'
   36    74        FETCH_DIM_R                                      ~49     !11, 1
         75        ROPE_ADD                                      3  ~52     ~52, ~49
         76        ROPE_ADD                                      4  ~52     ~52, '%3C%2Fbanner%3E%0A++++%3Curl%3E'
   37    77        ROPE_ADD                                      5  ~52     ~52, !10
         78        ROPE_ADD                                      6  ~52     ~52, '%3C%2Furl%3E%0A++++%3Ccountry%3E'
   38    79        FETCH_DIM_R                                      ~50     !11, 2
         80        ROPE_ADD                                      7  ~52     ~52, ~50
         81        ROPE_END                                      8  ~51     ~52, '%3C%2Fcountry%3E++%0A++++%3C%2Fchannels%3E'
   33    82        ASSIGN                                                   !14, ~51
   41    83        INIT_METHOD_CALL                                         !2, 'createDocumentFragment'
         84        DO_FCALL                                      0  $58     
         85        ASSIGN                                                   !15, $58
   42    86        INIT_METHOD_CALL                                         !15, 'appendXML'
         87        SEND_VAR_EX                                              !14
         88        DO_FCALL                                      0          
   43    89        FETCH_DIM_R                                      ~61     !4, 0
         90        INIT_METHOD_CALL                                         ~61, 'appendChild'
         91        SEND_VAR_EX                                              !15
         92        DO_FCALL                                      0          
   23    93      > JMP                                                      ->32
         94    >   FE_FREE                                                  $32
   47    95        INIT_METHOD_CALL                                         !2, 'saveXml'
         96        DO_FCALL                                      0  $63     
         97        ECHO                                                     $63
         98      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
165.81 ms | 1023 KiB | 17 Q