2009-12-03 40 views
4

感謝您抽出時間閱讀。如何使用正則表達式從MP3文件名獲取Artist和Title?

我有一個MP3文件的文件夾,我想用PHP來獲取Artist和Title,因爲ID3標籤不存在。

一個例子:

01. Wham - Last Christmas.mp3
02. Mariah Carey - All I Want For Christmas Is You.mp3
03. Band Aid - Do They Know It's Christmas Time.mp3

我相信這是可能的,我只是沒有足夠的口才使用正則表達式。

謝謝, 傑克。

+0

他們全部在正確的格式? 「00. [ArtistName] - [Song Title] .mp3」? – 2009-12-03 21:52:25

+0

是的,有50個,所以我不想手動做它們! – Jake 2009-12-03 21:54:25

+0

假設你的輸入是'01'。藝術家 - 一 - 二 - Three.mp3'。你想如何分手? – Asaph 2009-12-03 21:56:41

回答

7

那麼,對於大多數情況下,正則表達式

^\d+\. (.*) - (.*)\.mp3$ 

應該工作。

^  start of the string 
\d+  at least one digit 
\.  a literal dot 
(.*) the artist, in a capturing group. Matches arbitrary characters 
     until the following literal is encountered 
-  a literal space, dash, space 
(.*) the title, in a capturing group 
\.mp3 the file extension 
$  end of the string 

您可以用正則表達式與preg_match功能符合您的字符串:

$matches = array(); 
preg_match('/^\d+\. (.*) - (.*)\.mp3$/', "01. Wham - Last Christmas.mp3", $matches); 
$artist = $matches[1]; 
$title = $matches[2]; 
+0

我不認爲你知道我需要什麼函數來做這件事嗎? – Jake 2009-12-03 21:57:53

+1

+1非常好的解釋。 – 2009-12-03 22:06:40

+0

是的......告訴用戶使用爆炸不夠好...... – AntonioCS 2009-12-03 22:20:20