У меня есть наборы определенных c слов, которые я хочу обнаружить в субтитрах, а затем удалить всю строку с помощью регулярного выражения:
$forbiddenWords = [
'Ads',
'Download',
//
];
$file = file_get_contents('example.srt');
foreach ($forbiddenWords as $word) {
$file .= preg_replace("/\d{3}(?!.*?-)[\s\S]*?$word\[\s\S]*?(?=\d)/", '', $file);
}
Строки субтитров:
1
00:00:39,243 --> 00:00:45,820
This line is ok
2
00:00:46,243 --> 00:00:51,820
This line with
"Ads" word should be deleted
and next line
3
00:01:04,243 --> 00:01:05,820
This line with
"Download" word should be deleted
and next line
4
00:01:08,664 --> 00:01:12,331
An ok line
Результат, который я хочу:
1
00:00:39,243 --> 00:00:45,820
This line is ok
2
00:00:46,243 --> 00:00:51,820
3
00:01:04,243 --> 00:01:05,820
4
00:01:08,664 --> 00:01:12,331
An ok line
Мое регулярное выражение не работает, и оно захватывает несколько строк DEMO REGEX