前面见到有人发表
但是速度比较慢,也非常长
这里给出一种
function ubb($str) {
$color=Array('red','blue','green');
$str=eregi_replace('[url]([a-zA-Z0-9@:%_.~#-?&]+)[/url]','<a href=http://\1>\1</a>',$str);//url
$str=eregi_replace('[url=http://([a-zA-Z0-9@:%_.~#-?&]+)](.+)[/url]','<a href=\1 target=_blank>\2</a>',$str);
$str=eregi_replace('[url=([a-zA-Z0-9@:%_.~#-?&]+)](.+)[/url]','<a href=http://\1 target=_blank>\2</a>',$str);
$str=eregi_replace('[img]([a-zA-Z0-9@:%_.~#-?&]+)[/img]','<img src=http://\1>\1</img>',$str);//img
$str=eregi_replace('[h([1-6])](.+)[/h[1-6]]','<h\1>\2</h\1>',$str);//h1-6
$str=eregi_replace('[email]([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})[/email]','<a href=mailto:\1>\1</a>',$str);//email
$str=eregi_replace('[email=([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})](.+)[/email]','<a href=mailto:\1>\2</a>',$str);
$str=eregi_replace('[b](.+)[/b]','<b>\1</b>',$str);
$str=eregi_replace('[i](.+)[/i]','<i>\1</i>',$str);
$str=eregi_replace('[size=(.+)](.+)[/size]','<font size=\1>\2</font>',$str);
$str=eregi_replace('[color=(.+)](.+)[/color]','<font color=\1>\2</font>',$str);
$str=eregi_replace('[sub](.+)[/sub]','<sub>\1</sup>',$str);//下裱
$str=eregi_replace('[sup](.+)[/sup]','<sup>\1</sup>',$str);//上标
for($i=0;$i<=count($color);$i++)$str=eregi_replace('['.$color[$i].'](.+)[/'.$color[$i].']','<font color='.$color[$i].'>\1</font>',$str);
$str=preg_replace("/[quote](.+?)[/quote]/is","<blockquote><font size='1' face='Courier New'>quote:</font><hr>\1<hr></blockquote>", $str);
$str=preg_replace("/[code](.+?)[/code]/is","<blockquote><font size='1' face='Times New Roman'>code:</font><hr color='lightblue'><i>\1</i><hr color='lightblue'></blockquote>", $str);
$str=preg_replace("/[sig](.+?)[/sig]/is","<div style='text-align: left;color: darkgreen;margin-left: 5%'><br><br>--------------------------<br>\1<br>--------------------------</div>", $str);
return $str;
}