一个ubbcode的函数,速度很快.

前面见到有人发表
但是速度比较慢,也非常长
这里给出一种

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]]','<h1>2</h1>',$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;