2011-09-08 4 views

답변

0

이것은 내 bbcode 기능입니다. des 변수는 더 많은 bbcode를 지원합니다. 현재로서는 [b], [i], [u], [url], [img] 만 지원합니다.
[읽기] 나의 특별한 BBCode는 당신은 이것을 사용할 수 있습니다

function bbcode(text){ 
    var codes = {}; 
    codes['url'] = { 
     params : { 
      href : '' 
     }, 
     html: "<a href=\"$href\">$text</a>" 
    }; 
    codes['b'] = { 
     params : { 

     }, 
     html : "<b>$text</b>" 
    }; 
    codes['i'] = { 
     params : { 

     }, 
     html : "<i>$text</i>" 
    }; 
    codes['u'] = { 
     params : { 

     }, 
     html : "<u>$text</u>" 
    }; 
    codes['img'] = { 
     params : { 

     }, 
     html : "<img src=\"$text\" />" 
    }; 
    codes['read'] = { 
     params : { 

     }, 
     text : function(text){ 
      for(var x in codes){ 
       text = text.replace(new RegExp('\\[' + x + '\\]','gi'), '').replace(new RegExp('\\[\\/' + x + '\\]','gi'), ''); 
      } 
      return encodeURIComponent(text); 
     }, 
     process: function(text){ 
      return text; 
     }, 
     html : "$text <object type=\"application/x-shockwave-flash\" data=\"" + GLOBALS.baseUrl + "/player_mp3_maxi.swf\" width=\"200\" height=\"20\"><param name=\"movie\" value=\"" + GLOBALS.baseUrl + "/player_mp3_maxi.swf\" /><param name=\"bgcolor\" value=\"#ffffff\" /><param name=\"FlashVars\" value=\"mp3=http://api.ispeech.org/api/rest?apikey%3Ddeveloperdemokeydeveloperdemokey%26action%3Dconvert%26voice%3Dusenglishfemale1%26text%3D$TEXT&amp;width=200&amp;showslider=1\" /></object>" 
    }; 
    text = text.replace(/\</g, '&lt;').replace(/\>/g, '&gt;'); 
    var nomore = false; 
    while(!nomore){ 
     var matches = text.match(/\[([^\]]+)\]/gi); 
     if(matches == null) 
      return text; 
     nomore = true; 
     for(var i = 0; i < matches.length; i++){ 
      var code = matches[i].substring(1, matches[i].length - 1); 
      var parts = code.split(/\s+/); 
      if(typeof codes[parts[0]] == 'object'){ 
       //is exist 
       var obj = {}; 
       //get the params 
       for(var j = 1; j < parts.length; j++) 
       { 
        var temp = parts[j].split('='); 
        if(typeof codes[parts[0]].params[temp[0]] != 'undefined'){ 
         obj[temp[0]] = (temp.length > 1) ? (temp[1].indexOf('"') == 0 ? temp[1].substring(1, temp[1].length - 1) : temp[1]) : ''; 

        } 
       } 
       //find the text 
       var index = text.indexOf(matches[i]); 
       var index2 = text.indexOf('[/'+parts[0]+']', index); 
       if(index2 == -1) 
        index2 = text.length; 
       var t = text.substring(index + matches[i].length, index2); 
       if(typeof codes[parts[0]].process == 'function'){ 
        t = codes[parts[0]].process(t); 
       }if(typeof codes[parts[0]].text == 'function'){ 
        t2 = codes[parts[0]].text(t); 
       } 
       var html = codes[parts[0]].html; 
       for(var x in obj) 
        html = html.replace("$" + x, obj[x]); 
       html = html.replace(/\$text/g, t); 
       if(typeof codes[parts[0]].text == 'function'){ 
        html = html.replace(/\$TEXT/g, t2); 
       } 
       text = text.substr(0, index) + html + text.substr(index2 + parts[0].length + 3); 
       nomore = false; 
      } 
     } 
    } 
    text = text.replace(/\n/g, "<br />"); 
    return text; 
} 

내 웹 사이트입니다 : 나는 그것을 시도 할 것이다

text: bbcode(text) 
+0

! 감사 ! –

+0

예를 들어, [b] 무언가가 작동하지만 몇 초 후에 효과가 나타나기 때문에 코드를 시도했습니다. : –

+0

PHP 코드를 편집해야 할 수도 있습니다.이 스크립트에는'some second' 후에 채팅 메시지를 다시 작성하는 기능이 있으며 서버 -> 효과의 클라이언트 측 업데이트 새 메시지는 지워졌습니다. –