我有这个功能:
function emoticons(text){
var url = "http://www.domain.it/images/smilies/";
var emt = {
":D" : 'icon_e_biggrin.gif',
":-D" : 'icon_e_biggrin.gif',
":)" : 'icon_e_smile.gif',
":-)" : 'icon_e_smile.gif',
";)" : 'icon_e_wink.gif',
"';-)" : 'icon_e_wink.gif',
":(" : 'icon_e_sad.gif',
":-(" : 'icon_e_sad.gif',
":o" : 'icon_e_surprised.gif',
":?" : 'icon_e_confused.gif',
"8-)" : 'icon_cool.gif',
":x" : 'icon_mad.gif',
":P" : 'icon_razz.gif'
};
for (smile in emt){
text = text.replace(smile, '<img src="' + url + emt[smile] + '" class="emoticons" />');
}
return (text);
}
Run Code Online (Sandbox Code Playgroud)
如你所知.replace()转换第一次出现,如何在文本中替换多个表情符号?如何更改此功能?
非常感谢你!
您可以将每个表情符号字符串转换为全局正则表达式,当与 String#replace 方法一起使用时,它将替换所有出现的情况:
function emoticons(text){
var url = "http://www.domain.it/images/smilies/";
var emt = {
/\:D/g: 'icon_e_biggrin.gif',
/\:\-D/g: 'icon_e_biggrin.gif',
//...
Run Code Online (Sandbox Code Playgroud)
不过,您必须小心转义表情符号文本中的特殊字符。