Я пытаюсь перебрать существующие файлы .vtt и прочитать данные меток в базу данных.
Формат файлов .vtt:
WEBVTT FILE
line1
00:00:00.000 --> 00:00:10.000
‘Stuff’
line2
00:00:10.000 --> 00:00:20.000
Other stuff
Example with 2 lines
line3
00:00:20.00 --> 00:00:30.000
Example with only 2 digits in milliseconds
line4
00:00:30.000 --> 00:00:40.000
Different stuff
00:00:40.000 --> 00:00:50.000
Example without a head line
Первоначально я пыталсяиспользовать ^
и $
, чтобы быть достаточно регламентированным со строками вдоль линий: /^(\w*)$^(\d{2}):(\d{2}):(\d{2})\.(\d{2,3}) --> (\d{2}):(\d{2}):(\d{2})\.(\d{2,3})$^(.+)$/ims
, но я изо всех сил пытался заставить это работать в контролере регулярных выражений и прибегнул к использованию \s
для обработки начала / конца строки.
В настоящее время я использую следующее регулярное выражение: /(.*)\s(\d{2}):(\d{2}):(\d{2})\.(\d{2,3}) --> (\d{2}):(\d{2}):(\d{2})\.(\d{2,3})\s(.+)/im
Это частично работает с использованием онлайн-проверок регулярных выражений, таких как: https://regex101.com/r/mmpObk/3 (этот пример не принимает многострочные субтитры,но получает первую строку, которая на данный момент достаточно хороша для моей цели, так как все субтитры в настоящее время 1 строки).Однако, если я помещу это в php (preg_match_all("/(.*)\s(\d{2}):(\d{2}):(\d{2})\.(\d{2,3}) --> (\d{2}):(\d{2}):(\d{2})\.(\d{2,3})\s(.+)/mi", $fileData, $matches)
) и выведу результаты, я получу массив пустых массивов.
Что может быть разным между онлайн-регулярным выражением и php?
Заранее спасибодля любых предложений.
EDIT --- Ниже дамп $ fileData и дамп $ match:
string(341) "WEBVTT FILE
line1
00:00:00.000 --> 00:00:10.000
‘Stuff’
line2
00:00:10.000 --> 00:00:20.000
Other stuff
Example with 2 lines
line3
00:00:20.00 --> 00:00:30.000
Example with only 2 digits in milliseconds
line4
00:00:30.000 --> 00:00:40.000
Different stuff
00:00:40.000 --> 00:00:50.000
Example without a head line"
array(11) {
[0]=>
array(0) {}
[1]=>
array(0) {}
[2]=>
array(0) {}
[3]=>
array(0) {}
[4]=>
array(0) {}
[5]=>
array(0) {}
[6]=>
array(0) {}
[7]=>
array(0) {}
[8]=>
array(0) {}
[9]=>
array(0) {}
[10]=>
array(0) {}
}