public static string UbbDecode(string str)
{
str = HtmlEncode(str);
str = Regex.Replace(str, @"[url](?
.+?)[/url]", "${url}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
str = Regex.Replace(str, @"[url=(?.+?)](?.+?)[/url]", "${name}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
str = Regex.Replace(str, @"[email](?.+?)[/email]", "${email}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
str = Regex.Replace(str, @"[email=(?.+?)](?.+?)[/email]", "${name}", RegexOptions.Compiled | RegexOptions.IgnoreCase);
str = Regex.Replace(str, @"[flash](?.+?)[/flash]", "", RegexOptions.Compiled | RegexOptions.IgnoreCase);
str = Regex.Replace(str, @"[dir=(?[0-9]+?),(?[0-9]+?)](?.+?)[/dir]", "