【发布时间】:2012-07-25 21:45:10
【问题描述】:
1
00:00:00,074 --> 00:00:02,564
Previously on Breaking Bad...
2
00:00:02,663 --> 00:00:04,393
Words...
我需要用 php 解析 srt 文件,并用变量打印文件中的所有 subs。
我找不到正确的正则表达式。这样做时,我需要获取 id、时间和字幕变量。并且打印时不能没有 array() 等,必须与原始文件中的打印相同。
我的意思是我必须像这样打印;
$number <br> (e.g. 1)
$time <br> (e.g. 00:00:00,074 --> 00:00:02,564)
$subtitle <br> (e.g. Previously on Breaking Bad...)
顺便说一句,我有这个代码。但它没有看到线条。它必须被编辑,但如何?
$srt_file = file('test.srt',FILE_IGNORE_NEW_LINES);
$regex = "/^(\d)+ ([\d]+:[\d]+:[\d]+,[\d]+) --> ([\d]+:[\d]+:[\d]+,[\d]+) (\w.+)/";
foreach($srt_file as $srt){
preg_match($regex,$srt,$srt_lines);
print_r($srt_lines);
echo '<br />';
}
【问题讨论】:
-
好像网上已经有一些关于这个问题的资料,像github.com/delphiki/SubRip-File-Parser这样的库,你可能想避免重新发明轮子。如果您有疑问,请谷歌“解析 srt 文件 php”;)。
-
我用谷歌搜索了很多次。没有好的结果。一些结果有效,但不打印所有字幕并显示 array() 东西。顺便说一句,这会创建一个新的 srt 文件等。这不是我想要的吗?我必须用 php 打印 srt 文件的全部内容,与 srt 文件中的内容完全相同。但是在这样做时,我必须有一个循环和 3 个变量才能使一些工作。
-
我链接的库将 srt 文件转换为对象,因此从这个起点你可以对这些对象做任何你想做的事情,主页上的代码只是你可以做的一个示例。
-
现在非常容易做到这一点。我输入了 2021 年的答案