function ubb2html(str) { var i=0 ,codes=[], s=''+str, split_str='', tqeUrl='http://www.qs.com/vt/inc/client/js/tqEditor/', escUrl=function(url){return url.replace(/\[\]/g, function(c){return {'[':'%5b',']':'%5d'}[c];})};//TQE.url; s=s.replace(/[<>\" ]/g,function(c){return {'<':'<','>':'>','"':'"',' ':' '}[c];} ).replace(/\r?\n/g, '
'); do{split_str= '__CODE__'+Math.random()+'_';}while(s.indexOf(split_str)>=0); s = s.replace(/\[code[=\]].*?\[\/code\]/ig, function(cs){codes.push(cs); return split_str+(i++)+'_'}) .replace(/\[flv(?:\s*=\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+)\s*)?)?\](.*?)\[\/flv\]/ig, function(all,w,h,auto_start,url){ if(!w) w=320; if(!h) h=240; return ''}) .replace(/\[rm(?:\s*=\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+)\s*)?)?\](.*?)\[\/rm\]/ig, function(all,w,h,auto_start,url){ if(!w) w=320; if(!h) h=240; return '';}) .replace(/\[mp3\](.*?)\[\/mp3\]/ig, '') .replace(/\[img\](.*?)\[\/img\]/ig, '') .replace(/\[img(?:=\s*(\d+)\s*,\s*(\d+)\s*)\]\s*([\w_\-\.\/:]*)\s*\[\/img\]/ig, '') .replace(/\[(color|size)\s*=\s*([^\]]+)\s*\]/ig, '').replace(/\[\/(color|size)\]/ig, '') .replace(/\[bg\s*=\s*([^\]]+)\s*\]/ig, '').replace(/\[\/bg]/ig, '') .replace(/\[(left|center|right)]/ig, '
').replace(/\[\/(left|center|right)]/ig, '
') .replace(/(?:
|\s)?\[list\](.*?)(
|\s)*\[\/list\]/ig, function(a,c){ return '';}) .replace(/(?:
|\s)?\[numlist\](.*?)(
|\s)*\[\/numlist\]/ig, function(a,c){ return '
    '+c.replace(/\(\s| )*\[\*\]/g, '
  1. ')+'
';}) .replace(/\[\:(\d+)]/g, '') //表情 .replace(/\[(\/?(?:b|u|i|s|sup|sub|h[1-6]))\]/ig, '<$1>') .replace(/\[url\]\s*(((?!")[\s\S])*?)(?:"[\s\S]*?)?\s*\[\/url\]/ig,'$1') .replace(/\[url\s*=\s*([^\]"]+?)(?:"[^\]]*?)?\s*\]\s*([\s\S]*?)\s*\[\/url\]/ig,'$2') .replace(/\[email\]\s*(((?!")[\s\S])+?)(?:"[\s\S]*?)?\s*\[\/email\]/ig,'$1') .replace(/\[email\s*=\s*([^\]"]+?)(?:"[^\]]*?)?\s*\]\s*([\s\S]+?)\s*\[\/email\]/ig,'$2') .replace(/\[qq\]\s*(\d+)\s*\[\/qq\]/ig,'$1') .replace(/\[qq\s*=\s*(\d+)\s*\]\s*([\s\S]+?)\s*\[\/qq\]/ig,'$2') .replace(/\[quote\]([\s\S]*?)\[\/quote\]/ig,'
$1
'); while(/\[table\](((?!\[table)[\s\S])+?)\[\/table\]/i.test(s)){ s=s.replace(/\[table\](((?!\[table)[\s\S])+?)\[\/table\]/ig, function(a,c){ return ''+c.replace(/\[(\/?(?:tr|td|th))\]/ig, '<$1>')+'
'; }); } i=-1; s= s.replace(new RegExp(split_str+'\\d+_','g'), function(c){return codes[++i];}); return s; } function html2ubb(str) { var i=0 ,codes=[], s=''+str, split_str=''; do{split_str= '__CODE__'+Math.random()+'_';}while(s.indexOf(split_str)>=0); s = s.replace(/[\r\n]/g,'').replace(/]*>/ig,"\n"); s = s.replace(/\[code[=\]].*?\[\/code\]/ig, function(cs){codes.push(cs); return split_str+(i++)+'_'}) .replace(/]*)>/ig, function(all,attr){ var a,url,w='',h='',as='',attrStr=attr.toLowerCase(); a=/width\s*=\s*\"?([^ \"]+)/i.exec(attrStr); if(a){ w='='+a[1]; } if(w!=''){ a=/height\s*=\s*\"?([^ \"]+)/i.exec(attrStr); if(a){ h=','+a[1]; } } //flv if(attrStr.indexOf('vcastr_file')){ a= /vcastr_file=([^\"&]+)/.exec(attr); url=a[1]; if(''!=w){ a=/IsAutoPlay=(0|1)/.exec(attr); if(a){ as=','+a[1]; } } return '[flv'+w+h+as+']'+url+'[/flv]'; } //flash if(attrStr.indexOf('shockwave-flash')){ a=/src\s*=\s*\"?([^ \"]+)/i.exec(attrStr); url=a[1]; return '[flash'+w+h+']'+url+'[/flash]'; } //rm if(attrStr.indexOf('realaudio-plugin')){ a=/src\s*=\s*\"?([^ \"]+)/i.exec(attrStr); url=a[1]; if(''!=w){ a=/autostart\s*=\s*\"?(0|1)/.exec(attrStr); if(a){ as=','+a[1]; } } return '[rm'+w+h+']'+url+'[/rm]'; } return ''; }) .replace(//ig, function(all,attr){ var a,url,w='',h='',as='',attrStr=attr.toLowerCase(); a=/width\s*=\s*\"?([^ \"]+)/i.exec(attrStr); if(a){ w='='+a[1]; } if(w!=''){ a=/height\s*=\s*\"?([^ \"]+)/i.exec(attrStr); if(a){ h=','+a[1]; } } a=/ ]+)"?/i.exec(attr); url=a[1]; //mp3 if(attrStr.indexOf('mp3player')){ return '[mp3]'+url+'[/mp3]'; } return all; }) .replace(/]+)>/ig, function(all,attr){ var a,url,w='',h='',as='',attrStr=attr.toLowerCase(); a=/width\s*=\s*\"?([^ \"]+)/i.exec(attrStr); if(a){ w='='+a[1]; } if(w!=''){ a=/height\s*=\s*\"?([^ \"]+)/i.exec(attrStr); if(a){ h=','+a[1]; } } //emot a= /emot\s*=\s*"?(\d+)"?/i.exec(attr); if(a){ return '[:'+a[1]+']'; } //img a=/src\s*=\s*"?([^\"> ]+)"?/i.exec(attr); url=a[1]; return '[img'+w+h+']'+url+'[/img]'; }) //list .replace(/]*>/ig, '\n[list]') .replace(/\s*<\/ul[^>]*>/ig, '\n[/list]') .replace(/]*>/ig, '\n[numlist]') .replace(/\s*<\/ol[^>]*>/ig, '\n[/numlist]') .replace(/\s*]*>/ig, '\n[*]') .replace(/<\/li[^>]*>/ig, '') .replace(/<(\/?(?:b|u|i|s|sup|sub|table|tr|td|th|h[1-6]))(?![a-z])[^>]*>/ig, '[$1]') .replace(/<(\/)?(strong|em|strike|del)(?![a-z])[^>]*>/ig, function(a,b,c){ var t={'strong':'b', 'em':'i', 'strike':'s', 'del':'s'}[c.toLowerCase()]; if(b!=='/')b=''; return '['+b+t + ']'; }) .replace(/]*?)?>([\s\S]+?)<\/blockquote>/ig,'[quote]$1[/quote]'); var reg,a, rgb2color=function(r,g,b){ var color= (r*65536+g*256+b*1).toString(16),l=color.length; while(l++<6) color='0'+color; return '#'+color; }, getFormat=function(aStr){ var pre='', end=''; aStr=aStr.toLowerCase(); //left,center,right if( /align\s*[=:]\s*\"?(left|center|right)/.exec(aStr) ){ pre+='['+RegExp.$1+']'; end='[/'+RegExp.$1+']'+end; } //size if( /[^-]size\s*=\s*\"?(\d+\s*(?:px|pc|pt|em|ex|cm|mm)?)/.exec(aStr) ){ pre+='[size='+RegExp.$1+']'; end='[/size]'+end; } //color if( /[^-]color\s*[:=]\s*\"?rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/.exec(aStr) ){ pre+='[color='+rgb2color(RegExp.$1,RegExp.$2,RegExp.$3)+']'; end='[/color]'+end; }else if( /[^-]color\s*[:=]\s*\"?([a-z0-9#]+)/.exec(aStr) ){ pre+='[color='+RegExp.$1+']'; end='[/color]'+end; } //background-color if( /background(?:\-color)?\s*:\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/.exec(aStr) ){ pre+='[bg='+rgb2color(RegExp.$1,RegExp.$2,RegExp.$3)+']'; end ='[/bg]'+end; }else if( /background(?:\-color)?\s*:\s*([a-z0-9#]+)/.exec(aStr) ){ pre+='[bg='+RegExp.$1+']'; end ='[/bg]'+end; }; return {'pre':pre, 'end':end}; }; while(/]*)>(((?!/i.test(s)){// /
]*)>(((?!/ig, function(all, attr, text){ a=getFormat(attr); return "\n"+a.pre+text+a.end+"\n"; }); } while(/]*)>(((?!/i.test(s)){// /
]*)>(((?!/ig, function(all, attr, text){ a=getFormat(attr); return "\n"+a.pre+text+a.end+"\n"; }); } while(/]*)>(((?!/i.test(s)){// /
]*)>(((?!/ig, function(all, attr, text){ a=getFormat(attr); return a.pre+text+a.end; }); } while(/]*)>(((?!/i.test(s)){// /