簡體   English   中英

PHP正則表達式模式需要字符串

[英]PHP Regex Pattern Need String

我在數組3中需要以下問題,語言名稱不是數組4上的十六進制代碼我只想要音頻編解碼器,而不是像十六進制值或其他東西。

我沒有解決方案我已經測試過但都錯了。 有人能幫我嗎 ?

這是正則表達式數據:

Stream #0:1[0x1100](ger): Audio: dts (DTS) ([130][0][0][0] / 0x0082), 48000 Hz, 5.1(side), s16, 1536 kb/s
Stream #0:2(eng): Audio: dts (DTS-HD MA) ([134][0][0][0] / 0x0086), 48000 Hz, 5.1(side), s16, 1536 kb/s
Stream #0:3: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, 192 kb/s
Stream #1:0: Audio: mp2, 41000 Hz, stereo, 48 kb/s

這是我的正則表達式

/Stream #([0-9\.]+)?:([0-9\.]+).([A-Za-z][A-Za-z]*)?.+Audio: ([^,]+?), ([0-9]+) Hz, ?([^\n,]*)/

這是輸出數組:

Array
(
[0] => Array
    (
        [0] => Stream #0:1[0x1100](ger): Audio: dts (DTS) ([130][0][0][0] / 0x0082), 48000 Hz, 5.1(side)
        [1] => Stream #0:2(eng): Audio: dts (DTS-HD MA) ([134][0][0][0] / 0x0086), 48000 Hz, 5.1(side)
        [2] => Stream #0:3: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo
        [3] => Stream #1:0: Audio: mp2, 41000 Hz, stereo
    )

[1] => Array
    (
        [0] => 0
        [1] => 0
        [2] => 0
        [3] => 1
    )

[2] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 0
    )

[3] => Array
    (
        [0] => 
        [1] => eng
        [2] => 
        [3] => 
    )

[4] => Array
    (
        [0] => dts (DTS) ([130][0][0][0] / 0x0082)
        [1] => dts (DTS-HD MA) ([134][0][0][0] / 0x0086)
        [2] => mp2 ([3][0][0][0] / 0x0003)
        [3] => mp2
    )

[5] => Array
    (
        [0] => 48000
        [1] => 48000
        [2] => 48000
        [3] => 41000
    )

[6] => Array
    (
        [0] => 5.1(side)
        [1] => 5.1(side)
        [2] => stereo
        [3] => stereo
    )

)

如果您只想匹配Audio:之后的直接編解碼器名稱Audio:然后刪除所有無關的匹配組,只需查找字母數字字符:

 /Stream #([0-9\.]+)?:([0-9\.]+).([A-Za-z][A-Za-z]*)?.+Audio: (\w+)/

您也可以使用strtok($value, " ")從結果數組條目中拆分出第一部分。

在自由格式解析時,人們試圖獲得提示。 它通常僅基於小樣本文本而不足,因為您無法看到生成程序。

考慮到這一點,這可能會解決您的基本問題。 但是我會把它分解成幾個已知的簡單部分,然后分別解析它們。

Stream[ ]+\#
([0-9.]+)? : ([0-9.]+)         # 1,2  title : chapter
[^:(]* (?:\(([^)]*)\))?        # 3    language
[^:]* :
[ ]* Audio:
[^(\w,]* (\w*)                  # 4   aud codec
[^,]* , 
[ ]*([0-9]*)[ ]* (?i:[mkhz]+)   # 5   aud frequency
[^,]* , 
[ ]* ([^\n,]*)                  # 6   aud chan's

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM