如题

解决方案 »

  1.   

    可以这么做
    1.UBB的保存。页面上的保存是直接保存,通过javascript,以UBB格式直接保存在数据库里。关键问题要过滤掉不安全代码。
    例如:
    public string htmltoText(string chr1)
    {
    if(chr1==null)
    return "";
    chr1=chr1.Replace("<"," ");
    chr1=chr1.Replace(">"," ");
    return(chr1);
    }至于javascript代码我就不贴了,页面上另存为都可以得到。2.UBB的显示。public string Texttohtml(string chr)
    {

    if(chr==null)
    return "";
    chr=chr.Replace("<","&lt");
    chr=chr.Replace(">","&gt");
    chr=chr.Replace("\n","<br/>");
    chr = Regex.Replace(chr,@"\[url=(?<x>[^\]]*)\](?<y>[^\]]*)\[/url\]",@"<a href=$1 target=_blank class=maintext>$2</a>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[url\](?<x>[^\]]*)\[/url\]",@"<a href=$1 target=_blank class=maintext>$1</a>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[email=(?<x>[^\]]*)\](?<y>[^\]]*)\[/email\]",@"<a href=$1>$2</a>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[email\](?<x>[^\]]*)\[/email\]",@"<a href=$1>$1</a>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[flash](?<x>[^\]]*)\[/flash]",@"<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=500 height=400><PARAM NAME=movie VALUE=""$1""><PARAM NAME=quality VALUE=high><embed src=""$1"" quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width=500 height=400>$1</embed></OBJECT>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\",@"<IMG SRC=""$1"" border=0>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[color=(?<x>[^\]]*)\](?<y>[^\]]*)\[/color\]",@"<font color=$1>$2</font>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[face=(?<x>[^\]]*)\](?<y>[^\]]*)\[/face\]",@"<font face=$1>$2</font>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[size=1\](?<x>[^\]]*)\[/size\]",@"<font size=1>$1</font>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[size=2\](?<x>[^\]]*)\[/size\]",@"<font size=2>$1</font>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[size=3\](?<x>[^\]]*)\[/size\]",@"<font size=3>$1</font>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[size=4\](?<x>[^\]]*)\[/size\]",@"<font size=4>$1</font>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[align=(?<x>[^\]]*)\](?<y>[^\]]*)\[/align\]",@"<align=$1>$2</align>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[fly](?<x>[^\]]*)\[/fly]",@"<marquee width=90% behavior=alternate scrollamount=3>$1</marquee>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[move](?<x>[^\]]*)\[/move]",@"<marquee scrollamount=3>$1</marquee>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[glow=(?<x>[^\]]*),(?<y>[^\]]*),(?<z>[^\]]*)\](?<w>[^\]]*)\[/glow\]",@"<table width=$1 style='filter:glow(color=$2, strength=$3)'>$4</table>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[shadow=(?<x>[^\]]*),(?<y>[^\]]*),(?<z>[^\]]*)\](?<w>[^\]]*)\[/shadow\]",@"<table width=$1 style='filter:shadow(color=$2, strength=$3)'>$4</table>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[b\](?<x>[^\]]*)\[/b\]",@"<b>$1</b>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[i\](?<x>[^\]]*)\[/i\]",@"<i>$1</i>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[u\](?<x>[^\]]*)\[/u\]",@"<u>$1</u>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[code\](?<x>[^\]]*)\[/code\]",@"<pre id=code><font size=1 face='Verdana, Arial' id=code>$1</font id=code></pre id=code>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[list\](?<x>[^\]]*)\[/list\]",@"<ul>$1</ul>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[list=1\](?<x>[^\]]*)\[/list\]",@"<ol type=1>$1</ol id=1>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[list=a\](?<x>[^\]]*)\[/list\]",@"<ol type=a>$1</ol id=a>",RegexOptions.IgnoreCase);
    //chr = Regex.Replace(chr,@"\[\*\](?<x>[^\]]*)\[/\*\]",@"<li>$1</li>",RegexOptions.IgnoreCase);
    return(chr);
    }这比较明了了,把读出的数据转换一下就行了。楼主请给分
      

  2.   

    Function ubb(ByVal vstr As String)     
            '替换HTML标记及换行处理
            vstr = Server.HtmlEncode(vstr)
            vstr = Replace(vstr, Chr(32), " ")
            vstr = Replace(vstr, vbCrLf, "<br>")
            vstr = Replace(vstr, " ", "&nbsp;")
            Dim xface As Integer
            If xface = 1 Then
                '表情转换,数值型变量xface=1时,允许转换
                vstr = Replace(vstr, ":)", "<img src=""em/em1.gif"">")
                vstr = Replace(vstr, ":(", "<img src=""em/em2.gif"">")
                vstr = Replace(vstr, ":o", "<img src=""em/em3.gif"">")
                vstr = Replace(vstr, ":D", "<img src=""em/em4.gif"">")
                vstr = Replace(vstr, ";)", "<img src=""em/em5.gif"">")
                vstr = Replace(vstr, ":p", "<img src=""em/em6.gif"">")
                vstr = Replace(vstr, ":cool:", "<img src=""em/em7.gif"">")
                vstr = Replace(vstr, ":mad:", "<img src=""em/em8.gif"">")
                vstr = Replace(vstr, ":eek:", "<img src=""em/em9.gif"">")
                vstr = Replace(vstr, ":?:", "<img src=""em/em0.gif"">")
            End If        Dim objregex As Regex       '-----下-------
      

  3.   


            '屏蔽JS等等
            objregex = New Regex("javascript")
            vstr = objregex.Replace(vstr, "javascript")
            objregex = New Regex("jscript:")
            vstr = objregex.Replace(vstr, "jscript:")
            objregex = New Regex("js:")
            vstr = objregex.Replace(vstr, "js:")
            objregex = New Regex("value")
            vstr = objregex.Replace(vstr, "value")
            objregex = New Regex("about:")
            vstr = objregex.Replace(vstr, "about:")
            objregex = New Regex("file:")
            vstr = objregex.Replace(vstr, "file:")
            objregex = New Regex("document.cookie")
            vstr = objregex.Replace(vstr, "documents.cookie")
            objregex = New Regex("vbscript:")
            vstr = objregex.Replace(vstr, "vbscript:")
            objregex = New Regex("vbs:")
            vstr = objregex.Replace(vstr, "vbs:")
            objregex = New Regex("(on(mouse|exit|error|click|key))")
            vstr = objregex.Replace(vstr, "on$2")
            objregex = New Regex("script")
            vstr = objregex.Replace(vstr, "script")        'UBB转换
            'url
            objregex = New Regex("\[url\](http|https|ftp):\/\/(.[^\[]*)\[\/url\]")
            vstr = objregex.Replace(vstr, "<a href=""$1://$2"" TARGET=""_blank"">$1://$2</a>")
            'EMAIL
            objregex = New Regex("(\[email\])(\S+\@.[^\[]*)(\[\/email\])")
            vstr = objregex.Replace(vstr, "<A HREF=""mailto:$2"">$2</A>")        objregex = New Regex("(\[email=(\S+\@.[^\[]*)\])(.[^\[]*)(\[\/email\])")
            vstr = objregex.Replace(vstr, "<A HREF=""mailto:$2"" TARGET=_blank>$3</A>")        'IMG
            objregex = New Regex("\[img\](http|https|ftp):\/\/(.[^\[]*)\[\/img\]")
            vstr = objregex.Replace(vstr, "<br><a onfocus=this.blur() href=""$1://$2"" target=_blank><IMG SRC=""$1://$2"" border=0 alt=按此在新窗口浏览图片 onload=""javascript:if(this.width>screen.width-333)this.width=screen.width-333""></a>")        'COLOR
            objregex = New Regex("\[color=(.[^\[]*)\](.[^\[]*)\[\/color\]")
            vstr = objregex.Replace(vstr, "<font color=""$1"">$2</font>")
            'u
            objregex = New Regex("\[u\](.*)\[\/u\]")
            vstr = objregex.Replace(vstr, "<u>$1</u>")
            'B
            objregex = New Regex("\[b\](.*)\[\/b\]")
            vstr = objregex.Replace(vstr, "<b>$1</b>")
            'I
            objregex = New Regex("\[i\](.*)\[\/i\]")
            vstr = objregex.Replace(vstr, "<i>$1</i>")
            'FLY
            objregex = New Regex("\[fly\](.*)\[\/fly\]")
            vstr = objregex.Replace(vstr, "<marquee width=""80%"" behavior=""alternate"" scrollamount=""3"">$1</marquee>")
            'SHADOW
            objregex = New Regex("\[shadow=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.[^\[]*)\[\/shadow]")
            vstr = objregex.Replace(vstr, "<table width=$1 style=""filter:shadow(color=$2, strength=$3)"">$4</table>")        'CODE
            objregex = New Regex("\[code\](.*)\[\/code\]")
            vstr = objregex.Replace(vstr, "<table width=""80%"" border=""0"" cellpadding=""2"" cellspacing=""0"" bgcolor=""#99FFCC"" style=""border:1px solid #000000;font-size:9pt;font-family:tahoma""><tr><td>$1</td></tr></table>")        'glow
            objregex = New Regex("\[glow=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.[^\[]*)\[\/glow]")
            vstr = objregex.Replace(vstr, "<table width=$1 style=""filter:glow(color=$2, strength=$3)"">$4</table>")        'move
            objregex = New Regex("(\[move\])(.*)(\[\/move\])")
            vstr = objregex.Replace(vstr, "<marquee scrollamount=3>$2</marquee>")        'center
            objregex = New Regex("(\[center\])(.[^\[]*)(\[\/center\])")
            vstr = objregex.Replace(vstr, "<center>$2</center>")        'flash
            objregex = New Regex("(\[flash\])(.[^\[]*)(\[\/flash\])")
            vstr = objregex.Replace(vstr, "<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=500 height=400><PARAM NAME=movie VALUE=""$2""><PARAM NAME=quality VALUE=high><embed src=""$2"" quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width=500 height=400>$2</embed></OBJECT>")        'quote
            objregex = New Regex("(\[quote\])(.*)(\[\/quote\])")
            vstr = objregex.Replace(vstr, "<TABLE cellSpacing=1 cellPadding=10 width=100% bgColor=#000000 border=0><TR><TD bgColor=#ffffff>$2</td></tr></table><br>")        'html
            objregex = New Regex("(\[html\])(.[^\[]*)(\[\/html\])")
            vstr = objregex.Replace(vstr, "<table width='100%' border='0' cellspacing='0' cellpadding='6' bgcolor=''><td><b>以下内容为程序代码:</b><br>$2</td></table>")        'face
            objregex = New Regex("(\[face=(.[^\[]*)\])(.[^\[]*)(\[\/face\])")
            vstr = objregex.Replace(vstr, "<font FACE=$2>$3</font>")        'zip
            objregex = New Regex("(\[zip\])(.[^\[]*)(\[\/zip\])")
            vstr = objregex.Replace(vstr, "<br><img src=images/zip.gif border=0> <a href=aa/bb/$2>点击下载该文件</a>")        'rar
            objregex = New Regex("(\[rar\])(.[^\[]*)(\[\/rar\])")
            vstr = objregex.Replace(vstr, "<br><IMG SRC=images/rar.gif border=0> <a href=aa/bb/$2>点击下载该文件</a>")        'jpg
            objregex = New Regex("(\[jpg\])(.[^\[]*)(\[\/jpg\])")
            vstr = objregex.Replace(vstr, "相关主题图片如下<br><br><a onfocus=this.blur() href=aa/bb/$2 target=_blank><IMG SRC=aa/bb/$2 border=0 alt=按此在新窗口浏览图片 onload=""javascript:if(this.width>screen.width-333)this.width=screen.width-333""></a>")        'gif
            objregex = New Regex("(\[gif\])(.[^\[]*)(\[\/gif\])")
            vstr = objregex.Replace(vstr, "相关主题图片如下<br><br><a onfocus=this.blur() href=aa/bb/$2 target=_blank><IMG SRC=aa/bb/$2 border=0 alt=按此在新窗口浏览图片 onload=""javascript:if(this.width>screen.width-333)this.width=screen.width-333""></a>")
            'file
            objregex = New Regex("(\[file\])(.[^\[]*)(\[\/file\])")
            vstr = objregex.Replace(vstr, "<br><a href=""$2"">点击下载该文件</a>")
            'size
            objregex = New Regex("(\[size=1\])(.[^\[]*)(\[\/size\])")
            vstr = objregex.Replace(vstr, "<font size=1>$2</font>")        objregex = New Regex("(\[size=2\])(.[^\[]*)(\[\/size\])")
            vstr = objregex.Replace(vstr, "<font size=2>$2</font>")        objregex = New Regex("(\[size=3\])(.[^\[]*)(\[\/size\])")
            vstr = objregex.Replace(vstr, "<font size=3>$2</font>")        objregex = New Regex("(\[size=4\])(.[^\[]*)(\[\/size\])")
            vstr = objregex.Replace(vstr, "<font size=4>$2</font>")        objregex = New Regex("(\[size=5\])(.[^\[]*)(\[\/size\])")
            vstr = objregex.Replace(vstr, "<font size=5>$2</font>")
            '自动识别URL
            objregex = New Regex("\[url=(http:\/\/.[^\[]*)\](.[^\[]*)(\[\/url\])")
            vstr = objregex.Replace(vstr, "<a href=""$1"" target=""_blank"">$2</a>")
            objregex = New Regex("^(http://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)")
            vstr = objregex.Replace(vstr, "<a href=""$1"" target=""_blank"">$1</a>")
            objregex = New Regex("(http://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)$")
            vstr = objregex.Replace(vstr, "<a target=_blank href=$1>$1</a>")
            objregex = New Regex("[^>=""](http://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)")
            vstr = objregex.Replace(vstr, "<a target=_blank href=$1>$1</a>")        '完成,还可以自己扩展        ubb = vstr    End Function
      

  4.   

    public static string FormatDetail(string sDetail)
    {
    Regex r;
    Match m;//处理空格
    sDetail = sDetail.Replace(" ","&nbsp;");
    sDetail = sDetail.Replace("<","&lt;");
    sDetail = sDetail.Replace(">","&gt;");
    //sDetail = sDetail.Replace("\r\n","<BR><BR>");
    //sDetail = sDetail.Replace("\n","<BR>");
    //处标记
    r = new Regex(@"(\[b\])([ \S\t]*?)(\[\/b\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),"<B>" + m.Groups[2].ToString() + "</B>");
    }
    //处标记
    r = new Regex(@"(\[i\])([ \S\t]*?)(\[\/i\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),"<I>" + m.Groups[2].ToString() + "</I>");
    }
    //处标记
    r = new Regex(@"(\[U\])([ \S\t]*?)(\[\/U\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),"<U>" + m.Groups[2].ToString() + "</U>");
    }
    //处[p][/p]标记
    r = new Regex(@"((\r\n)*\[p\])(.*?)((\r\n)*\[\/p\])",RegexOptions.IgnoreCase|RegexOptions.Singleline);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),"<P class=\"pstyle\">" + m.Groups[3].ToString() + "</P>");
    }
    //处[sup][/sup]标记
    r = new Regex(@"(\[sup\])([ \S\t]*?)(\[\/sup\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),"<SUP>" + m.Groups[2].ToString() + "</SUP>");
    }
    //处[sub][/sub]标记
    r = new Regex(@"(\[sub\])([ \S\t]*?)(\[\/sub\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),"<SUB>" + m.Groups[2].ToString() + "</SUB>");
    }
    //处标记
    r = new Regex(@"(\[url\])([ \S\t]*?)(\[\/url\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<A href=\"" + m.Groups[2].ToString() + "\" target=\"_blank\"><IMG border=0 src=\"images/url.gif\">" +
    m.Groups[2].ToString() + "</A>");
    }
    //处xxx标记
    r = new Regex(@"(\[url=([ \S\t]+)\])([ \S\t]*?)(\[\/url\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<A href=\"" + m.Groups[2].ToString() + "\" target=\"_blank\"><IMG border=0 src=\"images/url.gif\">" +
    m.Groups[3].ToString() + "</A>");
    }
    //处[email][/email]标记
    r = new Regex(@"(\[email\])([ \S\t]*?)(\[\/email\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<A href=\"mailto:" + m.Groups[2].ToString() + "\" target=\"_blank\"><IMG border=0 src=\"images/email.gif\">" +
    m.Groups[2].ToString() + "</A>");
    }
    //处[email=xxx][/email]标记
    r = new Regex(@"(\[email=([ \S\t]+)\])([ \S\t]*?)(\[\/email\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<A href=\"mailto:" + m.Groups[2].ToString() + "\" target=\"_blank\"><IMG border=0 src=\"images/email.gif\">" +
    m.Groups[3].ToString() + "</A>");
    }
    //处[size=x][/size]标记
    r = new Regex(@"(\[size=([1-7])\])([ \S\t]*?)(\[\/size\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<FONT SIZE=" + m.Groups[2].ToString() + ">" + 
    m.Groups[3].ToString() + "</FONT>");
    }
    //处标记
    r = new Regex(@"(\[color=([\S]+)\])([ \S\t]*?)(\[\/color\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<FONT COLOR=" + m.Groups[2].ToString() + ">" + 
    m.Groups[3].ToString() + "</FONT>");
    }
    //处[font=x][/font]标记
    r = new Regex(@"(\[font=([\S]+)\])([ \S\t]*?)(\[\/font\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<FONT FACE=" + m.Groups[2].ToString() + ">" + 
    m.Groups[3].ToString() + "</FONT>");
    }
    //处理图片链接
    r = new Regex("\\[picture\\](\\d+?)\\[\\/picture\\]",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<A href=\"ShowImage.aspx?Type=ALL&Action=forumImage&ImageID=" + m.Groups[1].ToString() +
    "\" target=\"_blank\"><IMG border=0 Title=\"点击打开新窗口查看\" src=\"ShowImage.aspx?Action=forumImage&ImageID=" + m.Groups[1].ToString() +
    "\"></A>");
    }
    //处理[align=x][/align]
    r = new Regex(@"(\[align=([\S]+)\])([ \S\t]*?)(\[\/align\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<P align=" + m.Groups[2].ToString() + ">" + 
    m.Groups[3].ToString() + "</P>");
    }
    //处[H=x][/H]标记
    r = new Regex(@"(\[H=([1-6])\])([ \S\t]*?)(\[\/H\])",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<H" + m.Groups[2].ToString() + ">" + 
    m.Groups[3].ToString() + "</H" + m.Groups[2].ToString() + ">");
    }//处理[list=x][*][/list]
    r = new Regex(@"(\[list(=(A|a|I|i| ))?\]([ \S\t]*)\r\n)((\[\*\]([ \S\t]*\r\n))*?)(\[\/list\])",RegexOptions.IgnoreCase);
      

  5.   

    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    string strLI = m.Groups[5].ToString();
    Regex rLI = new Regex(@"\[\*\]([ \S\t]*\r\n?)",RegexOptions.IgnoreCase);
    Match mLI;
    for (mLI = rLI.Match(strLI); mLI.Success; mLI = mLI.NextMatch()) 
    {
    strLI = strLI.Replace(mLI.Groups[0].ToString(),"<LI>" + mLI.Groups[1]);
    }sDetail = sDetail.Replace(m.Groups[0].ToString(),
    "<UL TYPE=\"" + m.Groups[3].ToString() + "\"><B>" + m.Groups[4].ToString() + "</B>" + 
    strLI + "</UL>");
    }//处理换行,在每个新行的前面添加两个全角空格
    r = new Regex(@"(\r\n((&nbsp;)| )+)(?<正文>\S+)",RegexOptions.IgnoreCase);
    for (m = r.Match(sDetail); m.Success; m = m.NextMatch()) 
    {
    sDetail = sDetail.Replace(m.Groups[0].ToString(),"<BR>  " + m.Groups["正文"].ToString());
    }
    //处理换行,在每个新行的前面添加两个全角空格
    sDetail = sDetail.Replace("\r\n","<BR>");
    return sDetail;//return "<P Style=\"LINE-HEIGHT: 13pt;word-wrap:break-word;FONT-FAMILY: 宋体;\">" + sDetail + "</P>";
    }
    ////////////////////////////////////////////
    chr = Regex.Replace(chr,@"\[url=(?<x>[^\]]*)\](?<y>[^\]]*)\[/url\]",@"<a href=$1 target=_blank>$2</a>",RegexOptions.IgnoreCase);chr = Regex.Replace(chr,@"\[url\](?<x>[^\]]*)\[/url\]",@"<a href=$1 target=_blank>$1</a>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[flash](?<x>[^\]]*)\[/flash]",@"<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=500 height=400><PARAM NAME=movie VALUE=""$1""><PARAM NAME=quality VALUE=high><embed src=""$1"" quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width=500 height=400>$1</embed></OBJECT>",RegexOptions.IgnoreCase);chr = Regex.Replace(chr,@"\",@"<IMG SRC=""$1"" border=0>",RegexOptions.IgnoreCase);
    ////////////////////////////////////////////
    public string Texttohtml(string chr)
    {

    if(chr==null)
    return "";
    chr=chr.Replace("<","&lt");
    chr=chr.Replace(">","&gt");
    chr=chr.Replace("\n","<br/>");
    chr = Regex.Replace(chr,@"\[url=(?<x>[^\]]*)\](?<y>[^\]]*)\[/url\]",@"<a href=$1 target=_blank>$2</a>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[url\](?<x>[^\]]*)\[/url\]",@"<a href=$1 target=_blank>$1</a>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[email=(?<x>[^\]]*)\](?<y>[^\]]*)\[/email\]",@"<a href=$1>$2</a>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[email\](?<x>[^\]]*)\[/email\]",@"<a href=$1>$1</a>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[flash](?<x>[^\]]*)\[/flash]",@"<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=500 height=400><PARAM NAME=movie VALUE=""$1""><PARAM NAME=quality VALUE=high><embed src=""$1"" quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width=500 height=400>$1</embed></OBJECT>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\",@"<IMG SRC=""$1"" border=0>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[color=(?<x>[^\]]*)\](?<y>[^\]]*)\[/color\]",@"<font color=$1>$2</font>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[face=(?<x>[^\]]*)\](?<y>[^\]]*)\[/face\]",@"<font face=$1>$2</font>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[size=1\](?<x>[^\]]*)\[/size\]",@"<font size=1>$1</font>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[size=2\](?<x>[^\]]*)\[/size\]",@"<font size=2>$1</font>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[size=3\](?<x>[^\]]*)\[/size\]",@"<font size=3>$1</font>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[size=4\](?<x>[^\]]*)\[/size\]",@"<font size=4>$1</font>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[align=(?<x>[^\]]*)\](?<y>[^\]]*)\[/align\]",@"<align=$1>$2</align>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[fly](?<x>[^\]]*)\[/fly]",@"<marquee width=90% behavior=alternate scrollamount=3>$1</marquee>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[move](?<x>[^\]]*)\[/move]",@"<marquee scrollamount=3>$1</marquee>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[glow=(?<x>[^\]]*),(?<y>[^\]]*),(?<z>[^\]]*)\](?<w>[^\]]*)\[/glow\]",@"<table width=$1 style='filter:glow(color=$2, strength=$3)'>$4</table>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[shadow=(?<x>[^\]]*),(?<y>[^\]]*),(?<z>[^\]]*)\](?<w>[^\]]*)\[/shadow\]",@"<table width=$1 style='filter:shadow(color=$2, strength=$3)'>$4</table>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[b\](?<x>[^\]]*)\[/b\]",@"<b>$1</b>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[i\](?<x>[^\]]*)\[/i\]",@"<i>$1</i>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[u\](?<x>[^\]]*)\[/u\]",@"<u>$1</u>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[code\](?<x>[^\]]*)\[/code\]",@"<pre id=code><font size=1 face='Verdana, Arial' id=code>$1</font id=code></pre id=code>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[list\](?<x>[^\]]*)\[/list\]",@"<ul>$1</ul>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[list=1\](?<x>[^\]]*)\[/list\]",@"<ol type=1>$1</ol id=1>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[list=a\](?<x>[^\]]*)\[/list\]",@"<ol type=a>$1</ol id=a>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\[\*\](?<x>[^\]]*)\[/\*\]",@"<li>$1</li>",RegexOptions.IgnoreCase);
    chr = Regex.Replace(chr,@"\",@"<center>—— 以下是引用 ——<table border='1' width='80%' cellpadding='10' cellspacing='0' ><tr><td>$1</td></tr></table></center>",RegexOptions.IgnoreCase);
    return(chr);
    }
    public string htmltoText(string chr)
    {
    if(chr==null)
    return "";
    chr=chr.Replace("'","''");
    return(chr);
    }
      

  6.   

    programbcb(datawindow) ,我上面提供的还不够清楚吗?<%# Texttohtml(DataBinder.Eval(Container.DataItem,"数据里文章内容的字段").ToString())%>晕~~~~~~
      

  7.   

    public string Texttohtml(string chr)
    {
    if(chr==null)return "";
    chr=chr.Replace("<","&lt");
    chr=chr.Replace(">","&gt");
    chr=chr.Replace("\n","<br/>");
    //处理
    chr = Regex.Replace(chr,@"\[URL\](?<x>[^\]]*)\[\/URL\]",@"<a href=$1 target=_blank>$1</a>",RegexOptions.IgnoreCase);
    //处理x
    chr = Regex.Replace(chr,@"\[URL=(?<x>[^\]]*)\](?<y>[^\]]*)\[\/URL\]",@"<a href=$1 target=_blank>$2</a>",RegexOptions.IgnoreCase);
    //处理[EMAIL][/EMAIL]
    chr = Regex.Replace(chr,@"\[EMAIL\](?<x>[^\]]*)\[\/EMAIL\]",@"<img align=middle src=bbs/skins/default/email1.gif><A HREF=""mailto:$1"">$1</A>",RegexOptions.IgnoreCase);
    //处理[EMAIL=x][/EMAIL]
    chr = Regex.Replace(chr,@"\[EMAIL=(\S+\@.[^\[]*)\](?<y>[^\]]*)\[\/EMAIL\]",@"<img align=middle src=bbs/skins/default/email1.gif><A HREF=""mailto:$1"" TARGET=_blank>$2</A>",RegexOptions.IgnoreCase);
    //处理心情图标
    EmotPath="BBS/Skins/Default/emot/";
    chr = Regex.Replace(chr,@"\[em(.[^\[]*)\]",@"<img src="+EmotPath+"em$1.gif border=0 align=middle>",RegexOptions.IgnoreCase);
    //处理[div][/div]
    chr = Regex.Replace(chr,@"\[center\](.[^\[]*)\[\/center\]",@"<div align=center>$1</div>",RegexOptions.IgnoreCase);
    //处理[fly][/fly]
                chr = Regex.Replace(chr,@"\[fly\](.[^\[]*)\[\/fly\]",@"<marquee width=90% behavior=alternate scrollamount=3>$1</marquee>",RegexOptions.IgnoreCase);
    //处理[move][/move]
    chr = Regex.Replace(chr,@"\[move\](.[^\[]*)\[\/move\]",@"<marquee scrollamount=3>$1</marquee>",RegexOptions.IgnoreCase);
    //处理[SHADOW][/SHADOW]
    chr = Regex.Replace(chr,@"\[SHADOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.[^\[]*)\[\/SHADOW\]",@"<div style=""width:$1px;filter:shadow(color=$2, strength=$3)"">$4</div>",RegexOptions.IgnoreCase);
    //处理[GLOW][/GLOW]
    chr = Regex.Replace(chr,@"\[GLOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.[^\[]*)\[\/GLOW\]",@"<div style=""width:$1px;filter:glow(color=$2, strength=$3)"">$4</div>",RegexOptions.IgnoreCase);
    //处理
    chr = Regex.Replace(chr,@"\[b\](?<x>[^\]]*)\[/b\]",@"<b>$1</b>",RegexOptions.IgnoreCase);
    //处理
    chr = Regex.Replace(chr,@"\[i\](?<x>[^\]]*)\[/i\]",@"<i>$1</i>",RegexOptions.IgnoreCase);
    //处理
    chr = Regex.Replace(chr,@"\[u\](?<x>[^\]]*)\[/u\]",@"<u>$1</u>",RegexOptions.IgnoreCase);