using System;
using System.Web;
using System.Text;
using System.Text.RegularExpressions;
namespace Baolee.GeneralMethod
{
/// <summary>
/// UBB 的摘要说明。
/// </summary>
public class UBB
{
/// <summary>
/// 构造函数
/// </summary>
public UBB()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 完成具体的Replace工作
/// </summary>
/// <param name="pattern">源模板</param>
/// <param name="str">源字串</param>
/// <param name="tagstr">目标模板</param>
/// <returns>被目标模板格式化过的字串</returns>
private string CheckExp(string pattern, string str, string tagstr)
{
return Regex.Replace(str, pattern, tagstr, RegexOptions.IgnoreCase);
}
/// <summary>
/// 将UBB代码转换成指定的HTML形式 下面是UBB的使用示例:UBB ubb = new UBB();string descStr = ubb.ReTheStr(sourStr);
/// </summary>
/// <param name="str">源字串</param>
/// <returns></returns>
public string ReTheStr(string str)
{
if (str.Trim() == null)
{
return "";
}
string pattern = @"/<";
str = this.CheckExp(pattern, str, "<");
pattern = @"/>";
str = this.CheckExp(pattern, str, ">");
pattern = @"/n";
str = this.CheckExp(pattern, str, "<p>");
pattern = @"/r";
str = this.CheckExp(pattern, str, " ");
pattern = @"/[img/](http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)/.(jpg|gif)?)/[//img/]";
string tagstr = "<img src='$1' border=0>";
str = this.CheckExp(pattern, str, tagstr);
pattern = @"/[zip/]((ftp|http)://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)(/.zip|rar)?)/[//zip/]";
str = this.CheckExp(pattern, str, " <a href='$1' target=_blank>点击下载此文件</a> ");
pattern = @"/[flash/](http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)(/.swf)?)/[//flash/]";
str = this.CheckExp(pattern, str, "<br><object classid=/"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000/" codebase=/"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0/" width=/"550/" 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=/"550/" height=/"400/"></embed></object><br><a href=/"$1/" target='blank'>开新窗欣赏flash动画</a>");
pattern = @"/[flash=(http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)(/.swf)?),(/d{2,3}),(/d{2,3})/](.+)/[//flash/]";
str = this.CheckExp(pattern, str, "<br><object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0' width='$5' height='$6'><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='$5' height='$6'></embed></object><br><a href='$1' target='blank'>$7</a>");
pattern = @"/[url/]((http|ftp|https)://([/w-]+/.)+[/w-]+([/w- ./?~%&=]*))/[//url/]";
str = this.CheckExp(pattern, str, " <a href='$1' target=_blank>$1</a> ");
pattern = @"/[url=((http|ftp|https)://([/w-]+/.)+[/w-]+([/w-./?~%&=]*))/](.+)/[//url/]";
str = this.CheckExp(pattern, str, " <a href='$1' target=_blank>$5</a> ");
pattern = @"((http|ftp|https)://([/w-]+/.)+[/w-]+([/w-./?%&=]*))(/s)+";
str = this.CheckExp(pattern, str, " <a href='$1' target=_blank>$1</a> ");
pattern = @"((http|ftp|https)://([/w-]+/.)+[/w-]+)(/s)+";
str = this.CheckExp(pattern, str, " <a href='$1' target=_blank>$1</a> ");
pattern = @"(/[color=#)([0-F]{6})/](.+?)/[//color/]";
str = this.CheckExp(pattern, str, "<font color='$2'>$3</font>");
pattern = @"(/[size=)([0-9]{1})/](.+?)(/[//size/])";
str = this.CheckExp(pattern, str, "<font size='$2'>$3</font>");
pattern = @"(/[font=)(.+?)/](.+)(/[//font/])";
str = this.CheckExp(pattern, str, "<font face='$2'>$3</font>");
pattern = @"(/[b/])(.+?)(/[//b/])";
str = this.CheckExp(pattern, str, "<b>$2</b>");
pattern = @"(/[u/])(.+?)(/[//u/])";
str = this.CheckExp(pattern, str, "<u>$2</u>");
pattern = @"(/[li/])(.+)(/[//li/])";
str = this.CheckExp(pattern, str, "<li>$2</li>");
pattern = @"(/[QUOTE/])(.+)(/[//QUOTE/])";
str = this.CheckExp(pattern, str, "<BLOCKQUOTE>/u5f15/u7528:<HR SIZE=1><B>$2</B><HR SIZE=1></BLOCKQUOTE>");
pattern = @"(/[email=)(/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*)/](.+)(/[//email/])";
str = this.CheckExp(pattern, str, " <a href='mailto:$2'>$2</a> ");
pattern = @"(/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*)";
str = this.CheckExp(pattern, str, "<a href=mailto:$1>$1</a>");
pattern = @"(/[center/])(.+?)(/[//center/])";
str = this.CheckExp(pattern, str, "<center>$2</center>");
pattern = @"/[align=(left|right|center)?/](.+?)/[//align/]";
str = this.CheckExp(pattern, str, "<div align=$1>$2</div>");
pattern = @"/[fly/](.+?)/[//fly/]";
str = this.CheckExp(pattern, str, "<marquee width=90% behavior=alternate scrollamount=3>$1</marquee>");
pattern = @"/[move/](.+?)/[//move/]";
str = this.CheckExp(pattern, str, "<marquee scrollamount=3>$1</marquee>");
pattern = @"/[glow=([1-4]?),(#[0-F]{6}),([1-4]?)/](.+?)/[//glow/]";
str = this.CheckExp(pattern, str, "<table width=$1 style='filter:glow(color=$2, strength=$3)'>$4</table>");
pattern = @"/[shadow=([1-4]?),(#[0-F]{6}),([1-4]?)/](.+?)/[//shadow/]";
str = this.CheckExp(pattern, str, "<table width=$1 style='filter:shadow(color=$2, strength=$3)'>$4</table>");
pattern = "fuck";
str = this.CheckExp(pattern, str, "***");
pattern = @"(/[AUTO/])(.+?)(/[//AUTO/])";
str = this.CheckExp(pattern, str, "<BLOCKQUOTE>系统消息:<HR SIZE=1><B>$2</B><HR SIZE=1></BLOCKQUOTE>");
pattern = @"(/[DENY/])(.+?)(/[//DENY/])";
str = this.CheckExp(pattern, str, "<BLOCKQUOTE><b>拒绝通过审核的理由:<b><HR SIZE=1>$2<HR SIZE=1></BLOCKQUOTE>");
pattern = @"/[IMG/](upload///d*/.(jpg|gif|jpeg|bmp)?)/[//IMG/]";
str = this.CheckExp(pattern, str, "<br><img src='$1' border=0>");
pattern = @"/[ZIP/](upload///d*(/.ZIP)?)/[//ZIP/]";
str = this.CheckExp(pattern, str, "<br><img src='img/zip.gif' border=0><a href='$1' >压缩文件,点击下载</a>");
pattern = @"/[RAR/](upload///d*(/.RAR)?)/[//RAR/]";
str = this.CheckExp(pattern, str, "<br><img src='img/rar.gif' border=0><a href='$1' >压缩文件,点击下载</a>");
pattern = @"/[UPLOAD/](upload///d*/./w{0,4})/[//UPLOAD/]";
str = this.CheckExp(pattern, str, "<br><img src='img/upload.gif' border=0><a href='$1' >上传文件,请下载到本地打开</a>");
return str;
}
}
}