【发布时间】:2015-12-16 10:50:19
【问题描述】:
我正在编写一段代码来播放处理歌曲标签,但我遇到了一个问题。
我需要解析每个歌曲标签行并将其拆分,一方面得到和弦块,另一方面得到单词。
每个块都是这样的:
$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
),
);
关于如何做到这一点的任何想法?
谢谢!
【问题讨论】:
标签: php parsing preg-split