preg_match() 在缺少子模式主题时抓取下一行


preg_match() grabs next line when subpattern subject is missing

有这个模式:

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

而这个主题在$mp 3信息:

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] 返回整个下一行(专辑)。

主题包含所有空格和'(换行符)。不能使用 [A-Z],因为信息可以是任何语言。

请帮忙。

切换到多行模式 ( m ) 并使用锚点 ( ^$ ):

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

您还需要将's更改为字符类([ 't]),因为换行符正在被吃掉。