小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

通過正則表達(dá)式提取泰坦尼克號字幕里的所有臺詞

 軟件開發(fā)組 2020-07-01

網(wǎng)上搜了一下看看有沒有泰坦尼克號完整臺詞,找了好久也沒找到合適的,要么不完整,要么收費,要么數(shù)據(jù)是錯亂的,預(yù)期的臺詞是一個有中英文對照版的,然后按照格式一行行的排列,比如一行英文,一行中文,外加一行對應(yīng)電影的時間

怎么辦呢,想到了電影里的字幕,字幕里有數(shù)據(jù)的,數(shù)據(jù)格式也是統(tǒng)一的,我們利用正則提取一下就好了,開干

首先下載字幕,我在網(wǎng)上下載了一個,點擊這個圖片下載字幕文件:(點擊這個圖片,下載后把后綴名改成ssa就可以了)

然后查找文件里的規(guī)律,如下:

對于英文和中文有兩種格式,對于英語來說,格式如下:

對于中文來說,格式如下:

思路

  可以看到前面部分差不多的,后面的字幕之前有幾個字符不一樣,例如英文字幕是0000&}結(jié)尾的,而中文字幕是3000&}結(jié)尾的

  我們可以用兩個正則分別提取英語和中文的字幕信息,保存到對應(yīng)的數(shù)組里,數(shù)組里的鍵名為字幕的時間,是個字符串格式,值可以是個數(shù)組,分別是對應(yīng)的php教程字幕

 完整代碼如下:

復(fù)制代碼

<?php$str = file_get_contents('./zimu.ssa');                        //load ssa filefunction getResult($preg){                                    //get Subtitle interface
    global $str;     
    $result = array();    if(preg_match_all($preg,$str,$match,PREG_OFFSET_CAPTURE)){        foreach($match[1] as $key => $val){            $result[trim($val[0],',')]=$match[2][$key][0];
        }
    }    return $result;

}

$result_en = getResult('/Marked=([^D]*).*?0000&}(.*)/'); //獲取英文字幕

$result_cn = getResult('/Marked=([^D]*).*?3000&}(.*)/'); //獲取中文字幕

$result = array();$result_en = array_filter($result_en,function($val,$key) use(&$result,&$result_cn){ //將字幕合并到$result數(shù)組里

if(isset($result_cn[$key])){ $result[$key] = array($val,$result_cn[$key]); unset($result_cn[$key]); }else return true; },ARRAY_FILTER_USE_BOTH );function out($arr,$isarr=1){ //out inteface foreach($arr as $key => $val){ if($isarr) echo $key."<br/>".$val[0]."<br/>".$val[1]."<br/><br/>"; else echo $key."<br/>".$val."<br/><br/>"; } } out($result); //輸出中文和英文有對應(yīng)的字幕out($result_en,0); //輸出只有英文的字幕out($result_cn,0); //輸出只有中文的字幕?>

復(fù)制代碼

部分輸出如下:

OK,It's  Perfect~

下一篇貼出完整的字幕

正則里也遇到個問題,理想中[^D]改成[^(?:,D)]的話在getResult里就不需要調(diào)用trim()過濾掉末尾的,符號了,但是在php里(?:)不能用,可能php的正則引擎不支持這個功能吧,以后如果再深入研究的話再看看。      

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多