UBB代碼

UBB代碼是HTML(標準通用標記語言下的一個應用)的一個變種,是Ultimate Bulletin Board (國外的一個BBS程序)採用的一種特殊的TAG。您也許已經對它很熟悉了。UBB代碼很簡單,功能很少,但是由於其Tag語法檢查實現非常容易,所以不少網站引入了這種代碼,以方便網友使用顯示圖片/鏈接/加粗字體等常見功能。例如:
[url]www.atool.org[/url]
加入帶有說明的超級鏈接。
[url=http://www.atool.org]www.atool.org[/url]
[download=http://www.atool.org/2.zip]下載[/download]
[img]http://www.atool.org/res/logo...[/img]
顯示你的圖像,但請記住,http://是必須的
[b]粗體[/b]
粗體顯示
[color=#0000FF]顏色[/color]
帶有顏色的顯示
UBB標記說明

不能混合使用 HTML 和 UBB 。

ubb和htm相互轉換代碼js


                //缺個quote
            function to_ubb(str){
                //str = str.replace(/(\r\n|\n|\r)/ig, '');
                str = str.replace(/<br[^>]*>/ig,'\n');
                str = str.replace(/<p[^>\/]*\/>/ig,'\n');
                //str = str.replace(/\[code\](.+?)\[\/code\]/ig, function($1, $2) {return phpcode($2);});   
                str = str.replace(/\son[\w]{3,16}\s?=\s*([\'\"]).+?\1/ig,'');

                str = str.replace(/<hr[^>]*>/ig,'[hr]');
                str = str.replace(/<(sub|sup|u|strike|b|i|pre)>/ig,'[$1]');
                str = str.replace(/<\/(sub|sup|u|strike|b|i|pre)>/ig,'[/$1]');
                str = str.replace(/<(\/)?strong>/ig,'[$1b]');
                str = str.replace(/<(\/)?em>/ig,'[$1i]');
                str = str.replace(/<(\/)?blockquote([^>]*)>/ig,'[$1blockquote]');

                str = str.replace(/<img[^>]*smile=\"(\d+)\"[^>]*>/ig,'[s:$1]');
                str = str.replace(/<img[^>]*src=[\'\"\s]*([^\s\'\"]+)[^>]*>/ig,'[img]'+'$1'+'[/img]');
                str = str.replace(/<a[^>]*href=[\'\"\s]*([^\s\'\"]*)[^>]*>(.+?)<\/a>/ig,'[url=$1]'+'$2'+'[/url]');
                //str = str.replace(/<h([1-6]+)([^>]*)>(.*?)<\/h\1>/ig,function($1,$2,$3,$4){return h($3,$4,$2);});
          
                str = str.replace(/<[^>]*?>/ig, '');
                str = str.replace(/&amp;/ig, '&');
                str = str.replace(/&lt;/ig, '<');
                str = str.replace(/&gt;/ig, '>');

                return str;
            }

            function to_html(str){
                
                str = str.replace(/</ig,'&lt;');
                str = str.replace(/>/ig,'&gt;');
                str = str.replace(/\n/ig,'<br />');
                str = str.replace(/\[code\](.+?)\[\/code\]/ig, function($1, $2) {return phpcode($2);});

                str = str.replace(/\[hr\]/ig,'<hr />');
                str = str.replace(/\[\/(size|color|font|backcolor)\]/ig,'</font>');
                str = str.replace(/\[(sub|sup|u|i|strike|b|blockquote|li)\]/ig,'<$1>');
                str = str.replace(/\[\/(sub|sup|u|i|strike|b|blockquote|li)\]/ig,'</$1>');
                str = str.replace(/\[\/align\]/ig,'</p>');
                str = str.replace(/\[(\/)?h([1-6])\]/ig,'<$1h$2>');

                str = str.replace(/\[align=(left|center|right|justify)\]/ig,'<p align="$1">');
                str = str.replace(/\[size=(\d+?)\]/ig,'<font size="$1">');
                str = str.replace(/\[color=([^\[\<]+?)\]/ig, '<font color="$1">');
                str = str.replace(/\[backcolor=([^\[\<]+?)\]/ig, '<font style="background-color:$1">');
                str = str.replace(/\[font=([^\[\<]+?)\]/ig, '<font face="$1">');
                str = str.replace(/\[list=(a|A|1)\](.+?)\[\/list\]/ig,'<ol type="$1">$2</ol>');
                str = str.replace(/\[(\/)?list\]/ig,'<$1ul>');

                str = str.replace(/\[s:(\d+)\]/ig,function($1,$2){ return smilepath($2);});
                str = str.replace(/\[img\]([^\[]*)\[\/img\]/ig,'<img src="$1" border="0" />');
                str = str.replace(/\[url=([^\]]+)\]([^\[]+)\[\/url\]/ig, '<a href="$1">'+'$2'+'</a>');
                str = str.replace(/\[url\]([^\[]+)\[\/url\]/ig, '<a href="$1">'+'$1'+'</a>');
                
                var quote= function(q){ 
                        var cls=new Array();
                        //                 '<div ><BLOCKQUOTE><font size=1 face=""Verdana, Arial"">quote:</font><HR>"'+$2+'"<HR></BLOCKQUOTE>"';});
                        //cls[0]='<BLOCKQUOTE><div style="display: block; position: relative; border: 1px dotted #dddddd; margin: 3px 3px 3px 3px; padding: 1.5em 0px 0px 0px; text-align:left;">';
                        cls[0]='<div style="display: block; position: relative; border: 1px dotted #dddddd; margin: 3px 3px 3px 3px; padding: 1.5em 0px 0px 0px; text-align:left;">';
                        cls[3]='<div style="position: absolute; top: 0px ; color: #777777; background: #ffffff; font-family: Serif;">'
                        //cls[0]=cls[3]='<div>'
                        cls[1]='</div>';
                        //cls[2]=cls[1]+'</BLOCKQUOTE>';
                        cls[2]=cls[1]
                        var exec=function(str){
                            //console.log(str[1]);
                            //str2=str.toLowerCase()
                            var l=str.toLowerCase().lastIndexOf("[/QUOTE]".toLowerCase())
                            var f=str.toLowerCase().indexOf("[QUOTE".toLowerCase())
                            console.log(l);
                            console.log(f);
                            if(l==-1){
                                return str
                            }else
                               {
                                 var prev = str.slice(0,f)
                                 var t_str=str.slice(f+"[QUOTE".length,l)
                                 var lef =str.slice(l+"[/QUOTE]".length)
                                    console.log(t_str);
                                    if(t_str[0]=="="){
                                       var fa=t_str.toLowerCase().indexOf("]".toLowerCase())
                                      
                                        return prev+cls[0]+cls[3]+t_str.slice(1,fa)+cls[1]+exec(t_str.slice(1+fa))+cls[2]+lef
                           
                                      }
                                    else if(t_str[0]=="]"){
                                      //var la=t_str.toLowerCase().lastIndexOf("]".toLowerCase())
                                      return prev+cls[0]+exec(t_str.slice(1))+cls[2]+lef
                                    } else{
                                        return t_str
                                  }
                                 
                           }
                         
                    }//end of quote
                   return exec(q)
                 }//end of 
                str=quote(str)
                return str;
            }
            
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章