我正在处理一小段处理歌曲标签的代码,但我遇到了问题.
我需要解析每个歌曲标签行并将其拆分以一方面获得大量的和弦,另一方面提供单词.
每个块都会像:
$line_chunk = array( 0 => //part of line containing one or several chords 1 => //part of line containing words );
他们应该保持"分组".我的意思是,只有当函数达到和弦和单词之间的"限制"时它才会分裂.
我想我应该使用preg_split来实现这一点.我做了一些测试,但我只能分享和弦,而不是和弦的"组":
$line_chunks = preg_split('/(\[[^]]*\])/', $line, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
这些例子向您展示了我想要的内容:
在不含和弦的行上:
$input = '{intro}'; $results = array( array( 0 => null, 1 => '{intro} ) );
在仅包含和弦的行上:
$input = '[C#] [Fm] [C#] [Fm] [C#] [Fm]'; $results = array( array( 0 => '[C#] [Fm] [C#] [Fm] [C#] [Fm]', 1 => null ) );
在包含两者的一行上:
$input = '[C#]I’m looking for [Fm]you [G#]'; $results = array( array( 0 => '[C#]', 1 => 'I’m looking for' ), array( 0 => '[Fm]', 1 => 'you ' ), array( 0 => '[G#]', 1 => null ), );
有关如何做到这一点的任何想法?
谢谢 !