You need to use the "s" modifier to make the "." (in ".") match newlines. Also, you probably want the "." to be non-greedy (".*?"). And I think you want \1 instead of \2.
Try this:
preg_replace("/[quote](.*?)[\/quote]/s","<table><tr><td>\1</td></tr></table>", $output);
Finally, don't use a table for non-tabular data. Use a div, or other reasonable tag (probably blockquote in this case)...
preg_replace("/[quote](.*?)[\/quote]/s","<blockquote class=\"quote\">\1</blockquote>", $output);
You can use CSS to make it look different.