こんな方法も考えられるか・・・
テストしてないから、アレだが「array_filter」は便利だぞ

function firflist_re($directory, $pattern){
$dirs = scandir($directory); // scandirが使える環境用
return array_filter($dirs, create_function('$name', 'return preg_match("/'.$pattern.'/", $name);'));
}