ubb2html.asp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. <script language="javascript" runat="server">
  2. /*!
  3. * ubb2html support for asp
  4. * @requires xhEditor
  5. *
  6. * @author Yanis.Wang<yanis.wang@gmail.com>
  7. * @site http://xheditor.com/
  8. * @licence LGPL(http://www.opensource.org/licenses/lgpl-license.php)
  9. *
  10. * @Version: 0.9.13 (build 120228)
  11. */
  12. function ubb2html(sUBB)
  13. {
  14. var emotPath='../xheditor_emot/';//������·��
  15. var i,sHtml=String(sUBB),arrcode=new Array(),cnum=0;
  16. var arrFontsize=['10px','13px','16px','18px','24px','32px','48px'];
  17. sHtml=sHtml.replace(/\[code\s*(?:=\s*([^\]]+?))?\]([\s\S]*?)\[\/code\]/ig,function(all,t,c){//code���⴦��
  18. cnum++;arrcode[cnum]=all;
  19. return "[\tubbcodeplace_"+cnum+"\t]";
  20. });
  21. sHtml=sHtml.replace(/[<>&"]/g,function(c){return {'<':'&lt;','>':'&gt;','&':'&amp;','"':'&quot;'}[c];});
  22. sHtml=sHtml.replace(/\r?\n/g,"<br />");
  23. sHtml=sHtml.replace(/\[(\/?)(b|u|i|s|sup|sub)\]/ig,'<$1$2>');
  24. sHtml=sHtml.replace(/\[color\s*=\s*([^\]"]+?)(?:"[^\]]*?)?\s*\]/ig,'<font color="$1">');
  25. sHtml=sHtml.replace(/\[font\s*=\s*([^\]"]+?)(?:"[^\]]*?)?\s*\]/ig,'<font face="$1">');
  26. sHtml=sHtml.replace(/\[\/(color|font)\]/ig,'</font>');
  27. sHtml=sHtml.replace(/\[size\s*=\s*([^\]"]+?)(?:"[^\]]*?)?\s*\]/ig,function(all,size){
  28. if(size.match(/^\d+$/))size=arrFontsize[size-1];
  29. return '<span style="font-size:'+size+';">';
  30. });
  31. sHtml=sHtml.replace(/\[back\s*=\s*([^\]"]+?)(?:"[^\]]*?)?\s*\]/ig,'<span style="background-color:$1;">');
  32. sHtml=sHtml.replace(/\[\/(size|back)\]/ig,'</span>');
  33. for(i=0;i<3;i++)sHtml=sHtml.replace(/\[align\s*=\s*([^\]"]+?)(?:"[^\]]*?)?\s*\](((?!\[align(?:\s+[^\]]+)?\])[\s\S])*?)\[\/align\]/ig,'<p align="$1">$2</p>');
  34. sHtml=sHtml.replace(/\[img\]\s*(((?!")[\s\S])+?)(?:"[\s\S]*?)?\s*\[\/img\]/ig,'<img src="$1" alt="" />');
  35. sHtml=sHtml.replace(/\[img\s*=([^,\]]*)(?:\s*,\s*(\d*%?)\s*,\s*(\d*%?)\s*)?(?:,?\s*(\w+))?\s*\]\s*(((?!")[\s\S])+?)(?:"[\s\S]*)?\s*\[\/img\]/ig,function(all,alt,p1,p2,p3,src){
  36. var str='<img src="'+src+'" alt="'+alt+'"',a=p3?p3:(!isNum(p1)?p1:'');
  37. if(isNum(p1))str+=' width="'+p1+'"';
  38. if(isNum(p2))str+=' height="'+p2+'"'
  39. if(a)str+=' align="'+a+'"';
  40. str+=' />';
  41. return str;
  42. });
  43. sHtml=sHtml.replace(/\[emot\s*=\s*([^\]"]+?)(?:"[^\]]*?)?\s*\/\]/ig,function(all,emot){
  44. emot=emot.split(',');
  45. if(!emot[1]){emot[1]=emot[0];emot[0]='default';}
  46. return '<img src="'+emotPath+emot[0]+'/'+emot[1]+'.gif" alt="'+emot[1]+'" />';
  47. });
  48. sHtml=sHtml.replace(/\[url\]\s*(((?!")[\s\S])*?)(?:"[\s\S]*?)?\s*\[\/url\]/ig,'<a href="$1">$1</a>');
  49. sHtml=sHtml.replace(/\[url\s*=\s*([^\]"]+?)(?:"[^\]]*?)?\s*\]\s*([\s\S]*?)\s*\[\/url\]/ig,'<a href="$1">$2</a>');
  50. sHtml=sHtml.replace(/\[email\]\s*(((?!")[\s\S])+?)(?:"[\s\S]*?)?\s*\[\/email\]/ig,'<a href="mailto:$1">$1</a>');
  51. sHtml=sHtml.replace(/\[email\s*=\s*([^\]"]+?)(?:"[^\]]*?)?\s*\]\s*([\s\S]+?)\s*\[\/email\]/ig,'<a href="mailto:$1">$2</a>');
  52. sHtml=sHtml.replace(/\[quote\]/ig,'<blockquote>');
  53. sHtml=sHtml.replace(/\[\/quote\]/ig,'</blockquote>');
  54. sHtml=sHtml.replace(/\[flash\s*(?:=\s*(\d+)\s*,\s*(\d+)\s*)?\]\s*(((?!")[\s\S])+?)(?:"[\s\S]*?)?\s*\[\/flash\]/ig,function(all,w,h,url){
  55. if(!w)w=480;if(!h)h=400;
  56. return '<embed type="application/x-shockwave-flash" src="'+url+'" wmode="opaque" quality="high" bgcolor="#ffffff" menu="false" play="true" loop="true" width="'+w+'" height="'+h+'"/>';
  57. });
  58. sHtml=sHtml.replace(/\[media\s*(?:=\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+)\s*)?)?\]\s*(((?!")[\s\S])+?)(?:"[\s\S]*?)?\s*\[\/media\]/ig,function(all,w,h,play,url){
  59. if(!w)w=480;if(!h)h=400;
  60. return '<embed type="application/x-mplayer2" src="'+url+'" enablecontextmenu="false" autostart="'+(play=='1'?'true':'false')+'" width="'+w+'" height="'+h+'"/>';
  61. });
  62. sHtml=sHtml.replace(/\[table\s*(?:=\s*(\d{1,4}%?)\s*(?:,\s*([^\]"]+)(?:"[^\]]*?)?)?)?\s*\]/ig,function(all,w,b){
  63. var str='<table';
  64. if(w)str+=' width="'+w+'"';
  65. if(b)str+=' bgcolor="'+b+'"';
  66. return str+'>';
  67. });
  68. sHtml=sHtml.replace(/\[tr\s*(?:=\s*([^\]"]+?)(?:"[^\]]*?)?)?\s*\]/ig,function(all,bg){
  69. return '<tr'+(bg?' bgcolor="'+bg+'"':'')+'>';
  70. });
  71. sHtml=sHtml.replace(/\[td\s*(?:=\s*(\d{1,2})\s*,\s*(\d{1,2})\s*(?:,\s*(\d{1,4}%?))?)?\s*\]/ig,function(all,col,row,w){
  72. return '<td'+(col>1?' colspan="'+col+'"':'')+(row>1?' rowspan="'+row+'"':'')+(w?' width="'+w+'"':'')+'>';
  73. });
  74. sHtml=sHtml.replace(/\[\/(table|tr|td)\]/ig,'</$1>');
  75. sHtml=sHtml.replace(/\[\*\]((?:(?!\[\*\]|\[\/list\]|\[list\s*(?:=[^\]]+)?\])[\s\S])+)/ig,'<li>$1</li>');
  76. sHtml=sHtml.replace(/\[list\s*(?:=\s*([^\]"]+?)(?:"[^\]]*?)?)?\s*\]/ig,function(all,type){
  77. var str='<ul';
  78. if(type)str+=' type="'+type+'"';
  79. return str+'>';
  80. });
  81. sHtml=sHtml.replace(/\[\/list\]/ig,'</ul>');
  82. sHtml=sHtml.replace(/\[hr\/\]/ig,'<hr />');
  83. for(i=1;i<=cnum;i++)sHtml=sHtml.replace("[\tubbcodeplace_"+i+"\t]", arrcode[i]);
  84. sHtml=sHtml.replace(/(^|<\/?\w+(?:\s+[^>]*?)?>)([^<$]+)/ig, function(all,tag,text){
  85. return tag+text.replace(/[\t ]/g,function(c){return {'\t':'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',' ':'&nbsp;'}[c];});
  86. });
  87. function isNum(s){if(s!=null&&s!='')return !isNaN(s);else return false;}
  88. return sHtml;
  89. }
  90. function html2ubb(sHtml)
  91. {
  92. var regSrc=/\s+src\s*=\s*(["']?)\s*(.+?)\s*\1(\s|$)/i,regWidth=/\s+width\s*=\s*(["']?)\s*(\d+(?:\.\d+)?%?)\s*\1(\s|$)/i,regHeight=/\s+height\s*=\s*(["']?)\s*(\d+(?:\.\d+)?%?)\s*\1(\s|$)/i,regBg=/(?:background|background-color|bgcolor)\s*[:=]\s*(["']?)\s*((rgb\s*\(\s*\d{1,3}%?,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\))|(#[0-9a-f]{3,6})|([a-z]{1,20}))\s*\1/i
  93. var i,sUBB=String(sHtml),arrcode=new Array(),cnum=0;
  94. sUBB=sUBB.replace(/\s*\r?\n\s*/g,'');
  95. sUBB = sUBB.replace(/<(script|style)(\s+[^>]*?)?>[\s\S]*?<\/\1>/ig, '');
  96. sUBB = sUBB.replace(/<\!--[\s\S]*?-->/ig,'');
  97. sUBB=sUBB.replace(/<br(\s+[^>]*)?\/?>/ig,"\r\n");
  98. sUBB=sUBB.replace(/\[code\s*(=\s*([^\]]+?))?\]([\s\S]*?)\[\/code\]/ig,function(all,t,c){//code���⴦��
  99. cnum++;arrcode[cnum]=all;
  100. return "[\tubbcodeplace_"+cnum+"\t]";
  101. });
  102. sUBB=sUBB.replace(/<(\/?)(b|u|i|s)(\s+[^>]*?)?>/ig,'[$1$2]');
  103. sUBB=sUBB.replace(/<(\/?)strong(\s+[^>]*?)?>/ig,'[$1b]');
  104. sUBB=sUBB.replace(/<(\/?)em(\s+[^>]*?)?>/ig,'[$1i]');
  105. sUBB=sUBB.replace(/<(\/?)(strike|del)(\s+[^>]*?)?>/ig,'[$1s]');
  106. sUBB=sUBB.replace(/<(\/?)(sup|sub)(\s+[^>]*?)?>/ig,'[$1$2]');
  107. //fontתubb
  108. function font2ubb(all,tag,attrs,content)
  109. {
  110. if(!attrs)return content;
  111. var arrStart=[],arrEnd=[];
  112. var match;
  113. match=attrs.match(/ face\s*=\s*"\s*([^"]+)\s*"/i);
  114. if(match){
  115. arrStart.push('[font='+match[1]+']');
  116. arrEnd.push('[/font]');
  117. }
  118. match=attrs.match(/ size\s*=\s*"\s*(\d+)\s*"/i);
  119. if(match){
  120. arrStart.push('[size='+match[1]+']');
  121. arrEnd.push('[/size]');
  122. }
  123. match=attrs.match(/ color\s*=\s*"\s*([^"]+)\s*"/i);
  124. if(match){
  125. arrStart.push('[color='+formatColor(match[1])+']');
  126. arrEnd.push('[/color]');
  127. }
  128. return arrStart.join('')+content+arrEnd.join('');
  129. }
  130. sUBB = sUBB.replace(/<(font)(\s+[^>]*?)?>(((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S])*?<\/\1>)*?<\/\1>)*?)<\/\1>/ig,font2ubb);//��3��
  131. sUBB = sUBB.replace(/<(font)(\s+[^>]*?)?>(((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S])*?<\/\1>)*?)<\/\1>/ig,font2ubb);//��2��
  132. sUBB = sUBB.replace(/<(font)(\s+[^>]*?)?>(((?!<\1(\s+[^>]*?)?>)[\s\S])*?)<\/\1>/ig,font2ubb);//������
  133. for(i=0;i<3;i++)sUBB=sUBB.replace(/<(span)(?:\s+[^>]*?)?\s+style\s*=\s*"((?:[^"]*?;)*\s*(?:font-family|font-size|color|background|background-color)\s*:[^"]*)"(?: [^>]+)?>(((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S])*?<\/\1>)*?<\/\1>)*?)<\/\1>/ig,function(all,tag,style,content){
  134. var face=style.match(/(?:^|;)\s*font-family\s*:\s*([^;]+)/i),size=style.match(/(?:^|;)\s*font-size\s*:\s*([^;]+)/i),color=style.match(/(?:^|;)\s*color\s*:\s*([^;]+)/i),back=style.match(/(?:^|;)\s*(?:background|background-color)\s*:\s*([^;]+)/i),str=content;
  135. var arrStart=[],arrEnd=[];
  136. if(face){
  137. arrStart.push('[font='+face[1]+']');
  138. arrEnd.push('[/font]');
  139. }
  140. if(size){
  141. arrStart.push('[size='+size[1]+']');
  142. arrEnd.push('[/size]');
  143. }
  144. if(color){
  145. arrStart.push('[color='+formatColor(color[1])+']');
  146. arrEnd.push('[/color]');
  147. }
  148. if(back){
  149. arrStart.push('[back='+formatColor(back[1])+']');
  150. arrEnd.push('[/back]');
  151. }
  152. return arrStart.join('')+str+arrEnd.join('');
  153. });
  154. function formatColor(c)
  155. {
  156. var matchs;
  157. if(matchs=c.match(/\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i)){c=(matchs[1]*65536+matchs[2]*256+matchs[3]*1).toString(16);while(c.length<6)c='0'+c;c='#'+c;}
  158. c=c.replace(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i,'#$1$1$2$2$3$3');
  159. return c;
  160. }
  161. for(i=0;i<3;i++)sUBB=sUBB.replace(/<(div|p)(?:\s+[^>]*?)?[\s"';]\s*(?:text-)?align\s*[=:]\s*(["']?)\s*(left|center|right)\s*\2[^>]*>(((?!<\1(\s+[^>]*?)?>)[\s\S])+?)<\/\1>/ig,'[align=$3]$4[/align]');
  162. for(i=0;i<3;i++)sUBB=sUBB.replace(/<(center)(?:\s+[^>]*?)?>(((?!<\1(\s+[^>]*?)?>)[\s\S])*?)<\/\1>/ig,'[align=center]$2[/align]');
  163. for(i=0;i<3;i++)sUBB=sUBB.replace(/<(p|div)(?:\s+[^>]*?)?\s+style\s*=\s*"(?:[^;"]*;)*\s*text-align\s*:([^;"]*)[^"]*"(?: [^>]+)?>(((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S])*?<\/\1>)*?<\/\1>)*?)<\/\1>/ig,function(all,tag,align,content){
  164. return '[align='+align+']'+content+'[/align]';
  165. });
  166. sUBB=sUBB.replace(/<a(?:\s+[^>]*?)?\s+href=(["'])\s*(.+?)\s*\1[^>]*>\s*([\s\S]*?)\s*<\/a>/ig,function(all,q,url,text){
  167. if(!(url&&text))return '';
  168. var tag='url',str;
  169. if(url.match(/^mailto:/i))
  170. {
  171. tag='email';
  172. url=url.replace(/mailto:(.+?)/i,'$1');
  173. }
  174. str='['+tag;
  175. if(url!=text)str+='='+url;
  176. return str+']'+text+'[/'+tag+']';
  177. });
  178. sUBB=sUBB.replace(/<img(\s+[^>]*?)\/?>/ig,function(all,attr){
  179. var emot=attr.match(/\s+emot\s*=\s*(["']?)\s*(.+?)\s*\1(\s|$)/i);
  180. if(emot)return '[emot='+emot[2]+'/]';
  181. var url=attr.match(regSrc),alt=attr.match(/\s+alt\s*=\s*(["']?)\s*(.*?)\s*\1(\s|$)/i),w=attr.match(regWidth),h=attr.match(regHeight),align=attr.match(/\s+align\s*=\s*(["']?)\s*(\w+)\s*\1(\s|$)/i),str='[img',p='';
  182. if(!url)return '';
  183. p+=alt[2];
  184. if(w||h)p+=','+(w?w[2]:'')+','+(h?h[2]:'');
  185. if(align)p+=','+align[2];
  186. if(p)str+='='+p;
  187. str+=']'+url[2]+'[/img]';
  188. return str;
  189. });
  190. sUBB=sUBB.replace(/<blockquote(?:\s+[^>]*?)?>/ig,'[quote]');
  191. sUBB=sUBB.replace(/<\/blockquote>/ig,'[/quote]');
  192. sUBB=sUBB.replace(/<embed((?:\s+[^>]*?)?(?:\s+type\s*=\s*"\s*application\/x-shockwave-flash\s*"|\s+classid\s*=\s*"\s*clsid:d27cdb6e-ae6d-11cf-96b8-4445535400000\s*")[^>]*?)\/?>/ig,function(all,attr){
  193. var url=attr.match(regSrc),w=attr.match(regWidth),h=attr.match(regHeight),str='[flash';
  194. if(!url)return '';
  195. if(w&&h)str+='='+w[2]+','+h[2];
  196. str+=']'+url[2];
  197. return str+'[/flash]';
  198. });
  199. sUBB=sUBB.replace(/<embed((?:\s+[^>]*?)?(?:\s+type\s*=\s*"\s*application\/x-mplayer2\s*"|\s+classid\s*=\s*"\s*clsid:6bf52a52-394a-11d3-b153-00c04f79faa6\s*")[^>]*?)\/?>/ig,function(all,attr){
  200. var url=attr.match(regSrc),w=attr.match(regWidth),h=attr.match(regHeight),p=attr.match(/\s+autostart\s*=\s*(["']?)\s*(.+?)\s*\1(\s|$)/i),str='[media',auto='0';
  201. if(!url)return '';
  202. if(p)if(p[2]=='true')auto='1';
  203. if(w&&h)str+='='+w[2]+','+h[2]+','+auto;
  204. str+=']'+url[2];
  205. return str+'[/media]';
  206. });
  207. sUBB=sUBB.replace(/<table(\s+[^>]*?)?>/ig,function(all,attr){
  208. var str='[table';
  209. if(attr)
  210. {
  211. var w=attr.match(regWidth),b=attr.match(regBg);
  212. if(w)
  213. {
  214. str+='='+w[2];
  215. if(b)str+=','+b[2];
  216. }
  217. }
  218. return str+']';
  219. });
  220. sUBB=sUBB.replace(/<tr(\s+[^>]*?)?>/ig,function(all,attr){
  221. var str='[tr';
  222. if(attr)
  223. {
  224. var bg=attr.match(regBg)
  225. if(bg)str+='='+bg[2];
  226. }
  227. return str+']';
  228. });
  229. sUBB=sUBB.replace(/<(?:th|td)(\s+[^>]*?)?>/ig,function(all,attr){
  230. var str='[td';
  231. if(attr)
  232. {
  233. var col=attr.match(/\s+colspan\s*=\s*(["']?)\s*(\d+)\s*\1(\s|$)/i),row=attr.match(/\s+rowspan\s*=\s*(["']?)\s*(\d+)\s*\1(\s|$)/i),w=attr.match(regWidth);
  234. col=col?col[2]:1;
  235. row=row?row[2]:1;
  236. if(col>1||row>1||w)str+='='+col+','+row;
  237. if(w)str+=','+w[2];
  238. }
  239. return str+']';
  240. });
  241. sUBB=sUBB.replace(/<\/(table|tr)>/ig,'[/$1]');
  242. sUBB=sUBB.replace(/<\/(th|td)>/ig,'[/td]');
  243. sUBB=sUBB.replace(/<ul(\s+[^>]*?)?>/ig,function(all,attr){
  244. var t;
  245. if(attr)t=attr.match(/\s+type\s*=\s*(["']?)\s*(.+?)\s*\1(\s|$)/i);
  246. return '[list'+(t?'='+t[2]:'')+']';
  247. });
  248. sUBB=sUBB.replace(/<ol(\s+[^>]*?)?>/ig,'[list=1]');
  249. sUBB=sUBB.replace(/<li(\s+[^>]*?)?>/ig,'[*]');
  250. sUBB=sUBB.replace(/<\/li>/ig,'');
  251. sUBB=sUBB.replace(/<\/(ul|ol)>/ig,'[/list]');
  252. sUBB=sUBB.replace(/<h([1-6])(\s+[^>]*?)?>/ig,function(all,n){return '\r\n\r\n[size='+(7-n)+'][b]'});
  253. sUBB=sUBB.replace(/<\/h[1-6]>/ig,'[/b][/size]\r\n\r\n');
  254. sUBB=sUBB.replace(/<address(\s+[^>]*?)?>/ig,'\r\n[i]');
  255. sUBB=sUBB.replace(/<\/address>/ig,'[i]\r\n');
  256. sUBB=sUBB.replace(/<hr(\s+[^>]*?)?\/>/ig,'[hr/]');
  257. for(i=0;i<3;i++)sUBB=sUBB.replace(/<(p)(?:\s+[^>]*?)?>(((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S])*?<\/\1>)*?<\/\1>)*?)<\/\1>/ig,"\r\n\r\n$2\r\n\r\n");
  258. for(i=0;i<3;i++)sUBB=sUBB.replace(/<(div)(?:\s+[^>]*?)?>(((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S]|<\1(\s+[^>]*?)?>((?!<\1(\s+[^>]*?)?>)[\s\S])*?<\/\1>)*?<\/\1>)*?)<\/\1>/ig,"\r\n$2\r\n");
  259. sUBB=sUBB.replace(/((\s|&nbsp;)*\r?\n){3,}/g,"\r\n\r\n");//��������2���
  260. sUBB=sUBB.replace(/^((\s|&nbsp;)*\r?\n)+/g,'');//������ͷ����
  261. sUBB=sUBB.replace(/((\s|&nbsp;)*\r?\n)+$/g,'');//���������
  262. for(i=1;i<=cnum;i++)sUBB=sUBB.replace("[\tubbcodeplace_"+i+"\t]", arrcode[i]);
  263. sUBB=sUBB.replace(/<[^<>]+?>/g,'');//ɾ������HTML��ǩ
  264. var arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'};
  265. sUBB=sUBB.replace(/&(lt|gt|nbsp|amp|quot);/ig,function(all,t){return arrEntities[t];});
  266. //���������ݵ�UBB��ǩ
  267. sUBB=sUBB.replace(/\[([a-z]+)(?:=[^\[\]]+)?\]\s*\[\/\1\]/ig,'');
  268. return sUBB;
  269. }
  270. </script>