Pracuję nad małym kawałkiem kodu obsługującym obsługę zakładek, ale utknąłem na problemie.Używanie preg_split do dzielenia akordów i słów
muszę analizować każdą linię kartę piosenkę i podzielić ją dostać Kawałki akordów z jednej strony, a słowy w drugiej.
Każdy kawałek będzie jak:
$line_chunk = array(
0 => //part of line containing one or several chords
1 => //part of line containing words
);
one powinny pozostać "zgrupowane". Rozumiem przez to, że powinno się dzielić tylko wtedy, gdy funkcja osiągnie "granicę" między akordami i słowami.
Chyba powinienem użyć preg_split, aby to osiągnąć. Zrobiłem kilka testów, ale udało mi się tylko podzielić na akordy, a nie „grup” akordów:
$line_chunks = preg_split('/(\[[^]]*\])/', $line, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
tych przykładów pokazuje, co chciałbym dostać:
na linii zawierającej Brak akordy:
$input = '{intro}';
$results = array(
array(
0 => null,
1 => '{intro}
)
);
na linii zawierające tylko akordy:
$input = '[C#] [Fm] [C#] [Fm] [C#] [Fm]';
$results = array(
array(
0 => '[C#] [Fm] [C#] [Fm] [C#] [Fm]',
1 => null
)
);
na linii zawierające zarówno:
$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
),
);
Wszelkie pomysły, jak to zrobić?
Dzięki!