У меня есть два плейлиста m3u8, содержащих десятки потоков, которые я пытался сопоставить вместе. Каждая ссылка из Playlist01 имеет свою пару во втором - Playlist02, и каждая пара имеет общий идентификатор канала, через который я хотел бы провести это сопоставление. Playlist01 содержит ссылки как:
#EXTM3U
#EXTINF:-1 tvg-id="Name01" tvg-logo="http://link.png" tvg-chno="100" group-titles="groupone", Name01
path/playlist.php?ch=5101-ab
#EXTINF:-1 tvg-id="Name02" tvg-logo="http://link.png" tvg-chno="160" group-titles="groupone", Name02
path/playlist.php?ch=5102-ab
#EXTINF:-1 tvg-id="Name03" tvg-logo="http://link.png" tvg-chno="650" group-titles="groupone", Name03
path/playlist.php?ch=6234-ab
Затем есть Playlist02 со ссылками, например:
#EXTM3U
#EXTINF:-1 tvg-id="Name01" tvg-logo="http://link.png" tvg-chno="100" group-titles="groupone", Name01
http://link345/at/a31350ff5/857183/5101-ab.m3u8
#EXTINF:-1 tvg-id="Name02" tvg-logo="http://link.png" tvg-chno="160" group-titles="groupone", Name02
http://link574/at/bn350frf5/675494/5102-ab.m3u8
#EXTINF:-1 tvg-id="Name03" tvg-logo="http://link.png" tvg-chno="650" group-titles="groupone", Name03
http://link674/at/g4K7J7h0r/845987/6234-ab.m3u8
И, конечно же, есть список воспроизведения. php, который должен помочь мне объединить ссылки из обоих плейлистов вместе. В списке воспроизведения. php Я читаю данные из списка воспроизведения 02
<?php
$string = file_get_contents('playlist02.m3u8'); // reading data from playlist02
preg_match_all('/(?P<tag>#EXTINF:-1)|(?<link>http[^\s]+)/', $string, $match ); // parsing data – I want to get just the url links
$count = count( $match[0] );
$result = [];
$index = -1;
for( $i =0; $i < $count; $i++ ){
$item = $match[0][$i];
if( !empty($match['tag'][$i])){
//is a tag increment the result index
++$index;
}elseif( !empty($match['link'][$i])){
$result[$index]['link'] = $item ;
}
}
print_r( $result );
Результат:
Array
(
[0] => Array ( [link] => http://link345/at/a31350ff5/857183/5101-ab.m3u8 )
[1] => Array ( [link] => http://link574/at/bn350frf5/675494/5102-ab.m3u8 )
[2] => Array ( [link] => http://link674/at/g4K7J7h0r/845987/6234-ab.m3u8)
)
Из списка воспроизведения 01 Я получаю идентификатор канала с помощью метода:
$channel = $_GET["ch"]; // in "ch" I have channel ID e.g. 5101-ab
$link = $result[$index]['link'] = $item ; // this is full link from playlist02 e.g. http://link345/at/a31350ff5/857183/5101-ab.m3u8
$prefix = substr($link,0,88); // this slice the first part of the link http://link345/at/a31350ff5/857183/ (links are originally much longer, so the numbers (0,88) don’t match this example, I just wanted to shorten them for an illustration..)
$chid = substr($link,88,10); // this slice the channel ID from the link „5101-ab“
Не могли бы вы помочь мне, какие команды я должен использовать, чтобы сопоставить правильный $ префикс из Playlist02 до ["ch"] из Playlist01 в соответствии с $ chid как эти параметры общие для обоих плейлистов? Возможно, мой лог c этой пары неверен, и я должен выбрать другой подход, но я PHP новичок, и я попытался собрать информацию с этого форума, PHP руководств, смешать их и создать новый рабочий скрипт. Это соединение - последняя вещь, которую мне не хватает и которую я не могу сделать в одиночку. В конце я хотел бы создать URL-адрес, который будет отправлен в Playlist01, например:
$url = ($prefix.$channel.".m3u8"); // where $channel from playlist01 should belong to correct $prefix from playlist02 - in this case ch=5101-ab, so ith should have had a prefix which stand in [0] => Array
header('Location: '.$url.'');
exit;
?>
Я был бы очень благодарен за вашу помощь с правильным определением структуры управления (для, foreach), которая поможет мне доделать sh этот скрипт. Большое спасибо за совет!