javasrcipt实现简单UBB代码方法

 

//  JavaScript Document
//
 UBB代码简单实现 lxin v0.1beta;
function  filter(s) {
    
    
//替换[b][/b][i][i]
    s=s.replace(/</g,"&lt;");
    s
=s.replace(/>/g,"&gt;");
    s
=s.replace(/[b]/g,"<b>");
    s
=s.replace(/[/b]/g,"</b>");
    s
=s.replace(/[i]/g,"<i>");
    s
=s.replace(/[/i]/g,"</i>");
    
//~~~~~
    
    
//替换[size=*][/size]
    var ts=s;//临时变量
    var i=0;//记录匹配到了什么地方
    while(ts.match(/[size=d{1,2}]/)!=null){
        
var t=ts.match(/[size=d{1,2}]/);//获得匹配的
        i=ts.indexOf(t)+t.length;//获得下次开始匹配的位置
        var ss=t.toString();//必要
        var size=parseInt(ss.substring(ss.indexOf("=")+1));//获得[size=*] 的*;
        ss=ss.replace(/[/g,"/[");//注意Stirng里也是转意符
        ss=ss.replace(/]/g,"/]");
        
//alert(ss);
        s=s.replace(new RegExp(ss,"g"),"<font size="+size+" >")//将[size=*]替换为<font size=*>
        if(ts.length>i)ts=ts.substring(i);//冲这次匹配字符的后一个字符开始再次匹配;
        else ts="";
        }

    s
=s.replace(/[/size]/g,"</font>");
    
//~~~~~
    
    
//替换[link=*][/link]
    ts=s;//临时变量
    i=0;//记录匹配到了什么地方
    while(ts.match(/[link="[^"]*"]/)!=null){
        var t=ts.match(/[link=
"[^"]*"]/);//获得匹配的
        i=ts.indexOf(t)+t.length;//获得下次开始匹配的位置
        var ss=t.toString();//必要
        var linked=ss.substring(ss.indexOf("="")+2,ss.indexOf(""]"));//获得[link="*"] 的*;
        ss=ss.replace(/[/g,"/[");//注意Stirng里也是转意符
        ss=ss.replace(/]/g,"/]");
        
//alert(ss);
        if(linked.match(/http:///)==null)linked="http://"+linked;
            
            
        s
=s.replace(new RegExp(ss,"g"),"<a href=""+linked+"" >")//将[link=*]替换为<a href=*>
        if(ts.length>i)ts=ts.substring(i);//冲这次匹配字符的后一个字符开始再次匹配;
        else ts="";
        }

    s
= s.replace( / [ / link] / g, " </a> " );
    
// ~~~~~
    
    
// 替换[color=*][/color]
    ts = s; // 临时变量
    i = 0 ; // 记录匹配到了什么地方
     while (ts.match( / [color = " [#]?w* " ] / ) != null ) {
        
var t=ts.match(/[color="[#]?w*"]/);//获得匹配的
        i=ts.indexOf(t)+t.length;//获得下次开始匹配的位置
        var ss=t.toString();//必要
        var color=ss.substring(ss.indexOf("="")+2,ss.indexOf(""]"));//获得[color="*"] 的*;
        ss=ss.replace(/[/g,"/[");//注意Stirng里也是转意符
        ss=ss.replace(/]/g,"/]");
        
//alert(ss);
        s=s.replace(new RegExp(ss,"g"),"<font color=""+color+"" >")//将[color=*]替换为<font color="*">
        if(ts.length>i)ts=ts.substring(i);//冲这次匹配字符的后一个字符开始再次匹配;
        else ts="";
        }

    s
= s.replace( / [ / color] / g, " </font> " );
    s
= s.replace( / / g, " <br> " );
    
// ~~~~~
     // 替换[link=*][/link]
    ts = s; // 临时变量
    i = 0 ; // 记录匹配到了什么地方
     while (ts.match( / [img = " [^ " ] * " ]/)!=null){
        var t=ts.match(/[img=
" [ ^ " ]* " ] / ); // 获得匹配的
        i = ts.indexOf(t) + t.length; // 获得下次开始匹配的位置
         var  ss = t.toString(); // 必要
         var  linked = ss.substring(ss.indexOf( " =" " ) + 2 ,ss.indexOf( " "] " )); // 获得[img="*"] 的*;
        ss = ss.replace( / [ / g, " /[ " ); // 注意Stirng里也是转意符
        ss = ss.replace( / ] / g, " /] " );
        
// alert(ss);
         if (linked.match( / http:// / ) == null )linked = " http:// " + linked;
            
            
        s
= s.replace( new  RegExp(ss, " g " ), " <img src=" " + linked + " " > " ) // 将[link=*]替换为<a href=*>
         if (ts.length > i)ts = ts.substring(i); // 冲这次匹配字符的后一个字符开始再次匹配;
         else  ts = "" ;
        }
    
    
// ~~~~~
    
    
return  s;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值