qq表情符的替换和页面显示


 在工作中,需要对qq表情符的解析和显示,在下面的代码中,data和data2分别对应中英文的表情符,其中,看到"\\"表示的是转义。

     var url = 'http://res.mail.qq.com/zh_CN/images/mo/DEFAULT2/';
     var data = {
                "0":"微笑","1":"撇嘴","2":"色","3":"发呆","4":"得意","5":"流泪","6":"害羞","7":"闭嘴","8":"睡","9":"大哭","10":"尴尬"
                ,"11":"发怒","12":"调皮","13":"呲牙","14":"惊讶","15":"难过","16":"酷","17":"冷汗","18":"抓狂","19":"吐","20":"偷笑"
                ,"21":"可爱","22":"白眼","23":"傲慢","24":"饥饿","25":"困","26":"惊恐","27":"流汗","28":"憨笑","29":"大兵","30":"奋斗"
                ,"31":"咒骂","32":"疑问","33":"嘘...","34":"晕","35":"折磨","36":"衰","37":"骷髅","38":"敲打","39":"再见","40":"擦汗"
                ,"41":"抠鼻","42":"鼓掌","43":"糗大了","44":"坏笑","45":"左哼哼","46":"右哼哼","47":"哈欠","48":"鄙视","49":"委屈","50":"快哭了"
                ,"51":"阴险","52":"亲亲","53":"吓","54":"可怜","55":"菜刀","56":"西瓜","57":"啤酒","58":"篮球","59":"乒乓","60":"咖啡"
                ,"61":"饭","62":"猪头","63":"玫瑰","64":"凋谢","65":"示爱","66":"爱心","67":"心碎","68":"蛋糕","69":"闪电","70":"炸弹"
                ,"71":"刀","72":"足球","73":"瓢虫","74":"便便","75":"月亮","76":"太阳","77":"礼物","78":"拥抱","79":"强","80":"弱"
                ,"81":"握手","82":"胜利","83":"抱拳","84":"勾引","85":"拳头","86":"差劲","87":"爱你","88":"NO","89":"OK","90":"爱情"
                ,"91":"飞吻","92":"跳跳","93":"发抖","94":"怄火","95":"转圈","96":"磕头","97":"回头","98":"跳绳","99":"挥手","100":"激动"
                ,"101":"街舞","102":"献吻","103":"左太极","104":"右太极"
        };
     var data2 = {
        "0":"::\\)","1":"::~","2":"::B","3":"::\\|","4":":8\\-\\)","5":"::\\<","6":"::\\$","7":"::X","8":"::Z","9":"::'\\(","10":"::\\-\\|"
        ,"11":"::@","12":"::P","13":"::D","14":"::O","15":"::\\(","16":"::\\+","17":":\\-\\-b","18":"::Q","19":"::T","20":":,@P"
        ,"21":":,@\\-D","22":"::d","23":":,@o","24":"::g","25":":\\|\\-\\)","26":"::!","27":"::L","28":"::\\>","29":"::,@","30":":,@f"
        ,"31":"::\\-S","32":":\\?","33":":,@x","34":":,@@","35":"::8","36":":,@!","37":":!!!","38":":xx","39":":bye","40":":wipe"
        ,"41":":dig","42":":handclap","43":":&\\-\\(","44":":B\\-\\)","45":":<@","46":":@>","47":"::-O","48":":\\>\\-\\|","49":":P\\-\\(","50":"::'\\|"
        ,"51":":X\\-\\)","52":"::\\*","53":":@x","54":":8\\*","55":":pd","56":":<W>","57":":beer","58":":basketb","59":":oo","60":":coffee"
        ,"61":":eat","62":":pig","63":":rose","64":":fade","65":":showlove","66":":heart","67":":break","68":":cake","69":":li","70":":bome"
        ,"71":":kn","72":":footb","73":":ladybug","74":":shit","75":":moon","76":":sun","77":":gift","78":":hug","79":":strong","80":":weak"
        ,"81":":share","82":":v","83":":@\\)","84":":jj","85":":@@","86":":bad","87":":lvu","88":":no","89":":ok","90":":love"
        ,"91":":<L>","92":":jump","93":":shake","94":":<O>","95":":circle","96":":kotow","97":":turn","98":":skip","99":":oY","100":":#\\-0"
        ,"101":":hiphot","102":":kiss","103":":\\<&","104":":&\\>"
  };
     var ext = '.gif';    
  

   对表情符替换的代码如下:

   function ReplaceEmoji(str){

         var key, reg;
         for(key in data){
            //reg = '/' + data[key];
            reg = new RegExp('/' + data[key], 'g');
            str = str.replace(
                reg, 
                '<img src="' + url + key + ext + '" alt="mo-' + data[key] + '"/>'
            );
            //reg = '/' + data2[key];
            reg = new RegExp('/' + data2[key], 'g');
            str = str.replace(
                reg, 
                '<img src="' + url + key + ext + '" alt="mo-' + data[key] + '"/>'
            );

        }     
        return str;      
    }

 那么,对于str ="/::T/:,@-D/:|-)/:,@-D/::T/:,@P/::-|/::</::|/::B/::@/:wipe/:,@x/::+/:?/::8/:!!!/:,@!/:handclap/:&-(";的字符串,

直接可以用 str = ReplaceEmoji(str); 进行替换了

posted @ 2012-09-20 14:57  小丁  阅读(912)  评论(0编辑  收藏  举报