Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析/n到<;的问题;br>;将srt文件解析为javascript数组时_Javascript_Jquery_Parsing_Srt - Fatal编程技术网

解析/n到<;的问题;br>;将srt文件解析为javascript数组时

解析/n到<;的问题;br>;将srt文件解析为javascript数组时,javascript,jquery,parsing,srt,Javascript,Jquery,Parsing,Srt,我正在尝试用javascript解析srt文件。 我从stackoverflow中找到一些代码,但有一个问题。 我正在逐行解析srt文件,以识别字幕行、时间和字幕文本。 但是当代码读取字幕文本时,我的代码只能读取字幕的每一部分的一行,而字幕的某些部分包括2行或几行 这是我的密码 var PF_SRT = function() { //SRT format var pattern = /(\d+)\n([\d:,]+)\s+-

我正在尝试用javascript解析srt文件。 我从stackoverflow中找到一些代码,但有一个问题。 我正在逐行解析srt文件,以识别字幕行、时间和字幕文本。 但是当代码读取字幕文本时,我的代码只能读取字幕的每一部分的一行,而字幕的某些部分包括2行或几行

这是我的密码

var PF_SRT = function() {
                  //SRT format
                  var pattern = /(\d+)\n([\d:,]+)\s+-{2}\>\s+([\d:,]+)\n([\s\S]*?(?=\n{2}|$))/gm;
                  var _regExp;

                  var init = function() {
                    _regExp = new RegExp(pattern);
                  };
                  var parse = function(f) {
                    if (typeof(f) != "string")
                      throw "Sorry, Parser accept string only.";

                    var result = [];
                    if (f == null)
                      return _subtitles;


                    f = f.replace(/\r\n|\r|\n/g, '\n')


                    while ((matches = pattern.exec(f)) != null) {
                      result.push(toLineObj(matches));
                    }

                    return result;
                  }
                  var toLineObj = function(group) {
                    var hms_start = group[2].replace(',', ':').split(':');   

                    var hms_end = group[3].replace(',', ':').split(':');   

                    return {
                      line: group[1],
                      startTime: (+hms_start[0]) * 60 * 60 + (+hms_start[1]) * 60 + (+hms_start[2]) +'.'+ hms_start[3],
                      endTime: (+hms_end[0]) * 60 * 60 + (+hms_end[1]) * 60 + (+hms_end[2]) +'.'+ hms_end[3],
                      text: group[4]
                    };
                  }
                  init();
                  return {
                    parse: parse
                  }
                }();

// execution
// result is the entire line of srt subtitle file
PF_SRT.parse(result);
我预计产量为

6
00:00:32,616 --> 00:00:41,496
{\a2}{\c&HFFFFFF&}{\fnTahoma} And 23 of them say forget it
you say this thing never worked 
because there's no such thing called internet in the world

6
00:00:32,616 --> 00:00:41,496
{\a2}{\c&HFFFFFF&}{\fnTahoma}其中23人说忘了它
你说这个东西从来没有用过
因为世界上没有所谓的互联网
通过此行,您可以找到常见的新行字符,并将其替换为
\n
新行

f = f.replace(/\r\n|\r|\n/g, '\n')
您需要对其进行修改,以将HTML换行符替换为新行字符

例如:

f = f.replace(/\r\n|\r|\n|<br>/g, '\n')
f=f.replace(/\r\n |\r |\n |
/g,'\n')
但srt文件中没有HTML换行符
。我想在副标题部分的值中将新行(/n)更改为
,因为代码无法读取值的下一行。啊,我不清楚预期的输入/输出。如果要将

添加到
\n
换行符的位置,请将replace regex更改为类似
f=f.replace(/\r\n | \r |\n/g,
f = f.replace(/\r\n|\r|\n|<br>/g, '\n')