Получите все видео качества из блока текста, используя регулярное выражение

Я хочу получить все качество видео из строки. Моя строка:

#EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=350000 128/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=750000 500/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000 750/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1250000 1000/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1750000 1500/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2750000 2500/prog_index.m3u8?key=49bfee85b05d117a2906368428094e94 

И мой PHP-код:

 preg_match_all("/(.*?)\/prog_index.m3u8/mis", $serviceurlget, $C); print_r($C); 

Возвращает:

 Array ( [0] => Array ( [0] => #EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=350000 128/prog_index.m3u8 [1] => ?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=750000 500/prog_index.m3u8 [2] => ?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000 750/prog_index.m3u8 [3] => ?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1250000 1000/prog_index.m3u8 [4] => ?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1750000 1500/prog_index.m3u8 [5] => ?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2750000 2500/prog_index.m3u8 ) [1] => Array ( [0] => #EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=350000 128 [1] => ?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=750000 500 [2] => ?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000 750 [3] => ?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1250000 1000 [4] => ?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1750000 1500 [5] => ?key=49bfee85b05d117a2906368428094e94 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2750000 2500 ) ) 

Но я не хочу этого результата. Я хочу, чтобы он вернул 128 500 750 1000 1500 2500 . Как мне это сделать? Я попробовал функцию explode() . Но это не сработало. Я думаю, что есть ошибка с моим кодом регулярного выражения.

Удалите модификаторы m и s из инструкции preg_match_all() . Эти модификаторы влияют на то, как шаблон соответствует строке темы, и не всегда требуются:

  • m изменяет значение привязок строк ( ^ и $ ) от «match в начале / конце строки » до «match в начале / конце каждой строки ». Если в строке темы нет символов новой строки или нет вхождений строковых привязок в шаблоне регулярных выражений, этот модификатор бесполезен.

  • s изменяет значение метасимвола точки ( . ) из «сопоставить все, кроме символов новой строки», чтобы «соответствовать всем, включая символы новой строки». Это позволяет обрабатывать всю строку как одну строку.

Для получения дополнительной информации см. Документацию по PHP для модификаторов шаблонов .


Ваш код должен быть:

 preg_match_all("/(.*?)\/prog_index\.m3u8/i", $serviceurlget, $C); print_r($C[1]); 

Вывод:

 Array ( [0] => 128 [1] => 500 [2] => 750 [3] => 1000 [4] => 1500 [5] => 2500 ) 

демонстрация