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();

preferences:
28.55 ms | 407 KiB | 5 Q