You cannot use backreference like this. You need to use preg_replace_callback like:
function callback_function($m) {
return "<blockquote><p>" . $class->functions($m[1]) . "</p><p>..</p></blockquote>";
}
preg_replace_callback("#\[quote id=(.*?)\]#si", "callback_function", $input);