【问题标题】:How to extract text from unicode subtitle?如何从 unicode 字幕中提取文本?
【发布时间】:2019-09-23 08:47:44
【问题描述】:

我有一个 unicode 字幕文件,格式如下:

3
00:01:40,200 --> 00:01:43,326
english part

4
00:01:43,534 --> 00:01:44,851
خط فارسی

5
00:01:45,063 --> 00:01:48,485
complex part مخلوط

6
00:01:45,063 --> 00:01:48,485
complex part مخلوط
in 2 lines

如何提取数字作为键,文本作为值

[
   [3] => english part
   [4] => خط فارسی
   [5] => complex part مخلوط
   [6] => complex part مخلوط</br>in 2 lines
]

【问题讨论】:

    标签: php regex unicode subtitle


    【解决方案1】:

    不要将找到的数字用作索引。最好改用持续索引和键/值对。
    也就是说,您可以选择(启用multilineverbosemx):

    ^(\d+)\R
    [->\d: ,]+\R
    ((?:.+\R?)+)
    

    a demo on regex101.com


    PHP 这可能是
    <?php
    
    $text = <<<END
    3
    00:01:40,200 --> 00:01:43,326
    english part
    
    4
    00:01:43,534 --> 00:01:44,851
    خط فارسی
    
    5
    00:01:45,063 --> 00:01:48,485
    complex part مخلوط
    
    6
    00:01:45,063 --> 00:01:48,485
    complex part مخلوط
    in 2 lines
    END;
    
    $regex = <<<END
    ~
        ^(?P<line>\d+)\R
        [->\d: ,]+\R
        (?P<content>(?:.+\R?)+)
    ~mx
    END;
    
    preg_match_all($regex, $text, $matches);
    print_r($matches);
    ?>
    

    another demo on ideone.com

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多