preg_replace可使用 /e 修正符将 replacement 参数当作 PHP 代码来执行(在适当的逆向引用替换完之后)。
$result['groupname'] = preg_replace('/^(\[(.+)\])/ie','get_theyear("\\2")',$result['groupname']);
function get_theyear($year)
{
global $_SGLOBAL;
$_SGLOBAL['groupyear'] = $year===NULL ? '' : $year;
return '';
}