2014-02-12 51 views
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 

我會喜歡一些幫助/輸入。我只是無法進入正確的頭部空間。 謝謝。

回答

0

您可以像這裏閱讀文件: Read a plain text file with 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); 
?>