Как извлечь текст из субтитров Unicode? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть файл субтитров Unicode, отформатированный так:

3
00:01:40,200 --> 00:01:43,326
english part

4
00:01:43,534 --> 00:01:44,851
خط فارسی

5
00:01:45,063 --> 00:01:48,485
complex part مخلوط

6
00:01:45,063 --> 00:01:48,485
complex part مخلوط
in 2 lines

Как мне извлечь числа в качестве ключа и текст в качестве значения

[
   [3] => english part
   [4] => خط فارسی
   [5] => complex part مخلوط
   [6] => complex part مخلوط</br>in 2 lines
]

1 Ответ

1 голос
/ 23 сентября 2019

Не используйте найденные числа в качестве индексов.Вместо этого лучше использовать текущие индексы и пары ключ / значение.
Тем не менее, вы можете пойти (включить multiline и verbose, m и x):

^(\d+)\R
[->\d: ,]+\R
((?:.+\R?)+)

См. демо на regex101.com .


В PHP это может быть
<?php

$text = <<<END
3
00:01:40,200 --> 00:01:43,326
english part

4
00:01:43,534 --> 00:01:44,851
خط فارسی

5
00:01:45,063 --> 00:01:48,485
complex part مخلوط

6
00:01:45,063 --> 00:01:48,485
complex part مخلوط
in 2 lines
END;

$regex = <<<END
~
    ^(?P<line>\d+)\R
    [->\d: ,]+\R
    (?P<content>(?:.+\R?)+)
~mx
END;

preg_match_all($regex, $text, $matches);
print_r($matches);
?>

См. еще одну демонстрацию на ideone.com .

...