首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从带有条件的文本文件中删除值

如何从带有条件的文本文件中删除值
EN

Stack Overflow用户
提问于 2017-06-13 23:16:25
回答 1查看 114关注 0票数 0

我正在尝试创建一个函数,将srt转换为vtt,因此我指定了这两个文件之间的区别:

srt

代码语言:javascript
复制
1
    00:00:05,795 --> 00:00:09,832
    Are you alright?

vtt

代码语言:javascript
复制
00:00:05.795 --> 00:00:09.832
Are you alright?

差别在于每一行以上的数字,每一行增加1,而,在时间上增加。

我创建了一个函数,将,替换为.,但我不知道如何从文件中删除所有数字。我正在考虑删除的线条,即5个字母的长度,但也许有另一个选择?

以下是我所做的:

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-14 03:57:13

救援队

代码语言:javascript
复制
$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*,但是在格式化文本的开头需要一个换行符,但是我找不到如何插入它。他似乎没有做好这份工作。如果有人知道怎么做,请编辑。虽然它只是视觉的,而且你在字幕文件中并不真正关心这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44533010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档