我想在有人輸入歌詞時創建PDF和絃圖表。歌詞將被輸入的格式是這樣的:使用preg_match_all創建和絃圖表
[B]Some lyrics blah blah [D]more lyrics blah
Lyrics without any chord charts blah blah
Some lyrics [C]blah blah more [E]lyrics blah
我當時想提取每個和絃的變化,所以我可以導出在一個PDF像這樣顯示出來:
B D
Some lyrics blah blah more lyrics blah
Lyrics without any chord charts blah blah
C E
Some lyrics blah blah more lyrics blah
我擁有一切排序。目前,我只需要弄清楚如何extraxt所有每個和絃和絃本身的文字...
這裏是我當前的代碼:
$lyrics = '[B]Some lyrics blah blah [D]more lyrics blah
Lyrics without any chord charts blah blah
Some lyrics [C]blah blah more [E]lyrics blah';
$lyrics_html = '';
$x = 0;
$lyrics_lines = explode("\n", $lyrics);
// We've put each line into an array and now we will process each individually
foreach($lyrics_lines AS $lyrics_line) {
$x++;
if ($x > 1)
$lyrics_html .= '<br />';
// Check and see if an chords exist in this line
preg_match_all('/\[(\w{1,3})\]/i',
$lyrics_line,
$out);
if (!empty($out[0])) { // Found some chords, format it
print_r($out);
} else { // No chords found so just display the lyrics
$lyrics_html .= $lyrics_line;
}
}
echo $lyrics_html;
我下面的代碼選擇和絃無後顧之憂
preg_match_all('/\[(\w{1,3})\]/i',
$lyrics_line,
$out);
但是當我嘗試之前和之後的和絃選擇文本,我似乎無法推測出來......我嘗試了以下內容:
preg_match_all('/(\w+)\[(\w{1,3})\](\w+)/i',
$lyrics_line,
$out);
任何想法我需要什麼代碼,以便我可以選擇和絃和歌詞,以便我可以格式化它們?
排序結果將是很好的是這樣的:
Array
(
[0] => Array
(
[0] => [B]
[1] => [D]
)
[1] => Array
(
[0] => Some lyrics blah bla
[1] => more lyrics blah
)
)
和絃可以是相當複雜的...'(\ W {1,3})'不考慮複雜的和絃如AM7 + 9或甚至一些華碩其是4個字符 – philwinkle
如此簡單我並不熟悉和絃,但是我已經將常規表達式作爲常量替換,因此可以進行任何更改。 – Jacob
傳奇!工作先走!非常感謝您的幫助! –