php Ubb类_bennywongC
php Ubb类
以下是本人开发论坛时候用的类,感觉速度不错。可以快速匹配到。效率明显提高,建议大家用。
如果有什么问题可以直接贴出来..
[code]
<?php
/*
程序设计: 林建炫(飘枫设计室)
made in 陆丰 by 2007-03-07 中午
QQ: 5818500
Email: [email]linzhenxuan@163.com[/email]
如果你使用、修改请保留该信息!
功能: Ubb类
优点: 比普通ubb多了快速Ubb配对相应的html问题。
*/
Class Cls_Ubb
{
var $type='';
Function _htm($string)
{
if(!$string){return "";}
if(ereg("<(.+)*>(.+)*</(.+)*>",$string))
{
$string = eregi_replace("<","<",$string);
$string = eregi_replace(">",">",$string);
}
if(eregi("[(/*b)]",$string)){$this->type.="1,";}
if(eregi("[(/*i)]",$string)){$this->type.="2,";}
if(eregi("[(/*u)]",$string)){$this->type.="3,";}
if(eregi("[align=([a-zA-Z]*)]",$string)){$this->type.="4,";}
if(eregi("[fly](.+)*[/fly]",$string)){$this->type.="5,";}
if(eregi("[move](.+)*[/move]",$string)){$this->type.="6,";}
if(eregi("[light](.+)*[/light]",$string)){$this->type.="7,";}
if(eregi("[SHADOW=([0-9]{1,3}),([a-zA-Z]*),([0-9]{1,})](.+)*[/shadow]",$string)){$this->type.="8,";}
if(eregi("[url=(.+)](.+)[/url]",$string)){$this->type.="9,";}
if(eregi("[email]([a-zA-Z0-9]{1,}@([a-zA-Z0-9]{1,}.[a-zA-Z0-9]{1,})*)[/email]",$string)){$this->type.="10,";}
if(eregi("[em([0-9]{1,})]",$string)){$this->type.="11,";}
if(eregi("[img](.+)*[/img]",$string)){$this->type.="12,";}
if(eregi("[flash=*([0-9]*),*([0-9]*)](.+)*[/flash]",$string)){$this->type.="13,";}
if(eregi("[mp=*([0-9]{1,3}),([0-9]{1,3})](.+)*[/mp]",$string)){$this->type.="14,";}
if(eregi("[rm=([0-9]{1,3}),([0-9]{1,3})](.+)*[/rm]",$string)){$this->type.="15,";}
if(eregi("[sound](.+)*[/sound]",$string)){$this->type.="16,";}
if(eregi("[code](.+)*[/code]",$string)){$this->type.="17,";}
if(eregi("[sup](.+)*[/sup]",$string)){$this->type.="18,";}
if(eregi("[sub](.+)*[/sub]",$string)){$this->type.="19,";}
if(eregi("[color=(.+)*](.+)*[/color]",$string)){$this->type.="20,";}
if(eregi("[size=([0-9]{1})](.+)*[/size]",$string)){$this->type.="21,";}
if($this->type){$this->type=substr($this->type,0,(strlen($this->type)-1));}
return $string;
}
Function _ubb($string,$type='')
{
Global $rand;
$type = str_replace(" ","",$type);
$rand = rand();
if(!$string)
{
break;
}
else
{
if(!$type)
{
$string = eregi_replace("[(/*b)]","<\1>",$string);
$string = eregi_replace("[(/*i)]","<\1>",$string);
$string = eregi_replace("[(/*u)]","<\1>",$string);
$string = eregi_replace("[align=([a-zA-Z]*)]","<p align=\1>",$string);
$string = eregi_replace("[(/align)]","<\1>",$string);
$string = eregi_replace("[fly](.+)*[/fly]","<marquee width=90% behavior=alternate scrollamount=3>\1</marquee>",$string);
$string = eregi_replace("[move](.+)*[/move]","<MARQUEE scrollamount=3>\1</marquee>",$string);
$string = eregi_replace("[light](.+)*[/light]","<span style=\"behavior:url(Inc/font.htc)\">\1</span>",$string);
$string = eregi_replace("[SHADOW=([0-9]{1,3}),([a-zA-Z]*),([0-9]{1,})](.+)*[/shadow]","<table width=\1 ><tr><td style=\"filter:shadow(color=\2, stregExngth=\3)\">\4</td></tr></table>",$string);
$string = eregi_replace("[url=(.+)](.+)[/url]","<a href=\2>\1</a>",$string);
$string = eregi_replace("[email]([a-zA-Z0-9]{1,}@([a-zA-Z0-9]{1,}.[a-zA-Z0-9]{1,})*)[/email]","<a href=mailto:\1>\1</a>",$string);
$string = eregi_replace("[em([0-9]{1,})]","<img src=\"imagesEmotionsem\1.gif\">",$string);
$string = eregi_replace("[img](.+)*[/img]","<img src=\1>",$string);
$string = eregi_replace("[flash=*([0-9]*),*([0-9]*)](.+)*[/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=\1 height=\2><PARAM NAME=movie VALUE=\"\3\"><PARAM NAME=quality VALUE=high><embed src=\"\3\" quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width=\1 height=\2></embed></OBJECT>",$string);
$string = eregi_replace("[mp=*([0-9]{1,3}),([0-9]{1,3})](.+)*[/mp]","<br><b>此主题相关媒体如下:<a href=\"\3\" TARGET=_blank>(点这里下载)</a></b><br><object align=middle classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95 class=OBJECT id=MediaPlayer width=\1 height=\2 >\" & vbcrlf & \"<param name=ShowStatusBar value=-1>\" & vbcrlf & \"<param name=Filename value=\3>\" & vbcrlf & \"<embed type=application/x-oleobject codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701 flename=mp src=\3 width=\1 height=\2>\" & vbcrlf & \"</embed>\" & vbcrlf & \"</object>",$string);
$string = eregi_replace("[rm=([0-9]{1,3}),([0-9]{1,3})](.+)*[/rm]","<b>这个是 RealPlayer 音乐:</b><br><object classid=clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA class=OBJECT id=RAOCX width=280 height=70><param name=_ExtentX value=7938><param name=_ExtentY value=2646><param name=AUTOSTART value=0><param name=SHUFFLE value=0><param name=PREFETCH value=0><param name=NOLABELS value=0><param name=LOOP value=0><param name=NUMLOOP value=0><param name=CENTER value=0><param name=MAINTAINASPECT value=0><param name=BACKGROUNDCOLOR value=#000000><PARAM NAME=SRC VALUE=\3></object>",$string);
$string = eregi_replace("[sound](.+)*[/sound]","<a href=\"\1\" target=_blank><IMG SRC=Images/mid.gif border=0 alt='背景音乐'></a><bgsound src=\"\1\" loop=\"-1\">",$string);
$string = eregi_replace("[code](.+)*[/code]","<div align='center'><table border='0' width='90%' id='table7' cellspacing='0' cellpadding='0'><tr><td style='border: 1px solid #F9F9F9' bgcolor='#FFFBE8' height='20'><b><font color='#515100'>Code:</font></b></td></tr><tr><td style='border: 1px solid #F5F5F5' id='".$rand."'>\1</td></tr><tr><td style='border: 1px solid #F5F5F5'><input type=button value='运行这个代码' onclick='javascript:PopIt(\"代码预览\",\"".$rand."\")'></td></tr></table></div>",$string);
$string = eregi_replace("[sup](.+)*[/sup]","<sup>\1</sup>",$string);
$string = eregi_replace("[sub](.+)*[/sub]","<sub>\1</sub>",$string);
$string = eregi_replace("[color=(.+)*](.+)*[/color]","<font color=\1>\2</font>",$string);
$string = eregi_replace("[size=([0-9]{1})](.+)*[/size]","<font size=\1>\2</font>",$string);
}
else
{
$method = explode(",",$type);
//for($i=0;$i<=(count($method)-1);$i++)
//{
foreach($method as $x)
{
Switch($x)
{
case "1":
$string = eregi_replace("[(/*b)]","<\1>",$string);
break;
case "2":
$string = eregi_replace("[(/*i)]","<\1>",$string);
break;
case "3":
$string = eregi_replace("[(/*u)]","<\1>",$string);
break;
case "4":
$string = eregi_replace("[align=([a-zA-Z]*)]","<p align=\1>",$string);
$string = eregi_replace("[(/align)]","<\1>",$string);
break;
case "5":
$string = eregi_replace("[fly](.+)*[/fly]","<marquee width=90% behavior=alternate scrollamount=3>\1</marquee>",$string);
break;
case "6":
$string = eregi_replace("[move](.+)*[/move]","<MARQUEE scrollamount=3>\1</marquee>",$string);
break;
case "7":
$string = eregi_replace("[light](.+)*[/light]","<span style=\"behavior:url(Inc/font.htc)\">\1</span>",$string);
break;
case "8":
$string = eregi_replace("[SHADOW=([0-9]{1,3}),([a-zA-Z]*),([0-9]{1,})](.+)*[/shadow]","<table width=\1 ><tr><td style=\"filter:shadow(color=\2, stregExngth=\3)\">\4</td></tr></table>",$string);
break;
case "9":
$string = eregi_replace("[url=(.+)](.+)[/url]","<a href=\2>\1</a>",$string);
break;
case "10":
$string = eregi_replace("[email]([a-zA-Z0-9]{1,}@([a-zA-Z0-9]{1,}.[a-zA-Z0-9]{1,})*)[/email]","<a href=mailto:\1>\1</a>",$string);
break;
case "11":
$string = eregi_replace("[em([0-9]{1,})]","<img src=\"imagesEmotionsem\1.gif\">",$string);
break;
case "12":
$string = eregi_replace("[img](.+)*[/img]","<img src=\1>",$string);
break;
case "13":
$string = eregi_replace("[flash=*([0-9]*),*([0-9]*)](.+)*[/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=\1 height=\2><PARAM NAME=movie VALUE=\"\3\"><PARAM NAME=quality VALUE=high><embed src=\"\3\" quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width=\1 height=\2></embed></OBJECT>",$string);
break;
case "14":
$string = eregi_replace("[mp=*([0-9]{1,3}),([0-9]{1,3})](.+)*[/mp]","<br><b>此主题相关媒体如下:<a href=\"\3\" TARGET=_blank>(点这里下载)</a></b><br><object align=middle classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95 class=OBJECT id=MediaPlayer width=\1 height=\2 >\" & vbcrlf & \"<param name=ShowStatusBar value=-1>\" & vbcrlf & \"<param name=Filename value=\3>\" & vbcrlf & \"<embed type=application/x-oleobject codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701 flename=mp src=\3 width=\1 height=\2>\" & vbcrlf & \"</embed>\" & vbcrlf & \"</object>",$string);
break;
case "15":
$string = eregi_replace("[rm=([0-9]{1,3}),([0-9]{1,3})](.+)*[/rm]","<b>这个是 RealPlayer 音乐:</b><br><object classid=clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA class=OBJECT id=RAOCX width=280 height=70><param name=_ExtentX value=7938><param name=_ExtentY value=2646><param name=AUTOSTART value=0><param name=SHUFFLE value=0><param name=PREFETCH value=0><param name=NOLABELS value=0><param name=LOOP value=0><param name=NUMLOOP value=0><param name=CENTER value=0><param name=MAINTAINASPECT value=0><param name=BACKGROUNDCOLOR value=#000000><PARAM NAME=SRC VALUE=\3></object>",$string);
break;
case "16":
$string = eregi_replace("[sound](.+)*[/sound]","<a href=\"\1\" target=_blank><IMG SRC=Images/mid.gif border=0 alt='背景音乐'></a><bgsound src=\"\1\" loop=\"-1\">",$string);
break;
case "17":
$string = eregi_replace("[code](.+)*[/code]","<div align='center'><table border='0' width='90%' id='table7' cellspacing='0' cellpadding='0'><tr><td style='border: 1px solid #F9F9F9' bgcolor='#FFFBE8' height='20'><b><font color='#515100'>Code:</font></b></td></tr><tr><td style='border: 1px solid #F5F5F5' id='".$rand."'>\1</td></tr><tr><td style='border: 1px solid #F5F5F5'><input type=button value='运行这个代码' onclick='javascript:PopIt(\"代码预览\",\"".$rand."\")'></td></tr></table></div>",$string);
break;
case "18":
$string = eregi_replace("[sup](.+)*[/sup]","<sup>\1</sup>",$string);
break;
case "19":
$string = eregi_replace("[sub](.+)*[/sub]","<sub>\1</sub>",$string);
break;
case "20":
$string = eregi_replace("[color=(.+)*](.+)*[/color]","<font color=\1>\2</font>",$string);
break;
case "21":
$string = eregi_replace("[size=([0-9]{1})](.+)*[/size]","<font size=\1>\2</font>",$string);
break;
}
}
}
}
$string = nl2br($string);
return $string;
}
}//end class
/*
使用方法:
$ubb = New Cls_ubb;//设置$ubb
$htm = $ubb->_htm('[u]jfkd[/u][i]fdasfsa[/i]<u>jkdfs</u>');//把htm转成ubb,把ubb转成html。
$type = $ubb->type;//得到响应的ubb号码数
echo $htm;//输出html
echo $ubb->_UBB($htm);//把ubb转成html。本句可以使用echo $ubb->_UBB($htm,$type)可以快速配对入好
*/
?>
[/code]