2
我有一個自定義標記的字符串保存歌曲的和絃,tabulatures,注意事項等,包含各種括號如何用PHP解析異構標記?
事情:\[.+?\]
,\[[.+?\]]
,\(.+?\)
箭頭:<-{3,}>
,\-{3,}>
,<\-{3,}
等...
示例文本可能是
Text Text [something]
--->
Text (something 021213)
現在我想的標記解析成令牌,相應的類的對象,這將如下所示(括號內爲相匹配份)
ParsedBlock_Text ("Text Text ")
ParsedBlock_Chord ("something")
ParsedBlock_Text (" ")
ParsedBlock_NewColumn
ParsedBlock_Text (" text ")
ParsedBlock_ChordDiagram ("something 021213")
我知道如何與它們匹配的數組,但無論是我必須在每個不同的圖案匹配,並保存偏移量以正確排序數組,或者我一次匹配它們,並且我不知道哪一個匹配。
感謝,MK
不要通過正則表達式方法啓動這種複雜的解析任務。那很快就會變成一場可怕的惡夢。尋找一個「編譯器 - 編譯器」或「解析器生成器」,而是使用一種形式語法語法將標記編譯爲內部結構的工具。通過這種方式,您可以使用隨時可用的引擎,而不必再次執行所有經典錯誤,並強制自己爲標記定義真正的語法。 「石灰」可能是一個起點:http://sourceforge.net/projects/lime-php/ – arkascha 2013-05-03 12:15:23
謝謝,我會看看它,似乎更合乎邏輯的方法。 – SmallhillCZ 2013-05-07 09:29:48