2012-04-26 67 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