0

我需要帮助使用 PHP 清理文本文件。该文件随后由另一个需要以某种方式格式化文本的函数进行处理。

原始隐藏式字幕文本:

1
00:00:22,767 --> 00:00:24,634
line text 1
line text 2
line text 3

2
00:00:26,767 --> 00:00:28,634
line text 1
line text 2
line text 3

我需要一行文本。例如。

1
00:00:22,767 --> 00:00:24,634
line text 1 line text 2 line text 3

2
00:00:26,767 --> 00:00:28,634
line text 1 line text 2 line text 3

我想要一些帮助/输入。我只是很难进入正确的头部空间。谢谢。

4

1 回答 1

0

您可以像这里一样读取文件: 使用 php 读取纯文本文件, 然后处理每一行并将其写入另一个文件。如果您希望修改覆盖原始文件,您可以复制它,从副本中读取并将更改写入原始文件。像这样的东西应该工作:

<?php

$oldFile = fopen('oldFile.txt','r');
$newFile = fopen('newFile.txt', 'w');
$newLine = false;
while ($line = fgets($oldFile)) {
    //If is the number of the caption
    if(preg_match('/^\d+$/',$line)) {
        if(!newLine) {
            fwrite($newFile,'\n');  
        }
        fwrite($newFile, $line.'\n');
        $newLine = true;
    }
    //if it is the minutes label
    //00:00:22,767 --> 00:00:24,634
    else if(preg_match('/^\d{2}:\d{2}:\d{2}.\d{3} --> \d{2}:\d{2}:\d{2}.\d{3}$/',$line)) {
        if(!newLine) {
            fwrite($newFile,'\n');  
        }
        fwrite($newFile, $line.'\n');
        $newLine = true;
    }
    else {
        fwrite($newFile,$line.' ');
        $newLine = false;
    }
}
fclose($newFile)
fclose($oldFile);
?>
于 2014-02-12T20:06:40.853 回答