我正在尝试创建一个函数,将srt转换为vtt,因此我指定了这两个文件之间的区别:
srt
1
00:00:05,795 --> 00:00:09,832
Are you alright?vtt
00:00:05.795 --> 00:00:09.832
Are you alright?差别在于每一行以上的数字,每一行增加1,而,在时间上增加。
我创建了一个函数,将,替换为.,但我不知道如何从文件中删除所有数字。我正在考虑删除的线条,即5个字母的长度,但也许有另一个选择?
以下是我所做的:
function srttovtt($file){
$str = implode("\n", file($file));
$name = basename($file, '.srt');
$fp = fopen('uploads/subs/' . $name . '.vtt', 'w');
$str = str_replace(',', '.', $str); // replace comma
fwrite($fp, $str, strlen($str));
return $fp;
}发布于 2017-06-14 03:57:13
救援队
$text = preg_replace('~\d+\s*(\d{2}):(\d{2}):(\d{2}),(\d{3})\s*-->\s*(\d{2}):(\d{2}):(\d{2}),(\d{3})~', '\1:\2:\3.\4 --> \5:\6:\7.\8', $text);第一个\d+是必须去的数字,后面的\s*后面是每个空格。
接下来,我们需要修改的时间,所以我们将数字值保留在括号中,这样我们以后就可以用\1,\2等我们想要的格式来使用它了。
我应该在开始时也包含一个\s*,但是在格式化文本的开头需要一个换行符,但是我找不到如何插入它。他似乎没有做好这份工作。如果有人知道怎么做,请编辑。虽然它只是视觉的,而且你在字幕文件中并不真正关心这一点。
https://stackoverflow.com/questions/44533010
复制相似问题