2012-04-26 107 views
0

有以下模式:的preg_match()抓住下一行,當子模式受到缺少

preg_match('/Artist:\s+(.*?)\n/i', $mp3info, $artist); 

而且這個問題在$ mp3info:

Format: MPEG 1 Layer 3, Stereo 
Details: 44100 Hz Stereo, 227 kbps, playtime 03:14 
Tag:  ID3v2 
Title: 
Artist: 
Album: Latest 
Year:  
Track: 
Genre: 
Comment: 
Encoder= 

作品時,藝術家是不是空的。空時 - $ artist [1]返回整個下一行(相冊)。

主題包含所有空格和\ n(換行符)。 不能使用[A-Z],因爲信息可以是任何語言。

請幫忙。

回答

1

交換機到multiline modem),並使用anchors^$):

preg_match('/^Artist:[ \t]+(.*)$/mi', $mp3info, $artist); 
$artist = $artist[1]; 

你也需要改變\s到字符類([ \t]),作爲換行符是被吃掉。

+0

也嘗試過多行。同樣的結果。 /^藝術家:\ s+(.*?)$/im – 2012-04-26 13:48:18

+0

這是有效的。魔法。 – 2012-04-26 13:54:34