将表情字符串转化成对应的emoji表情图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将表情字符串转化成对应的emoji表情图片相关的知识,希望对你有一定的参考价值。

参考技术A 这样的。
找了很多资料,发现都得用图文混排的方式去处理,其中很多的表情字符串是[大哭]这样的形式,然后对于:sad:这样的形式就又有点懵逼了,后来用正则的方式去处理了,发现确实好用,同时也处理了tableviewCell的自适应高度问题。接下来和大家分享一下。

采用的是三方 MLLabel ,在pod file中添加pod'MLLabel' ,用终端 pod install,将三方导入自己的工程中。

准备工作做好后,开始进行编码
1.在ViewController中导入

创建全局属性

匹配方法中plistName和bundleName是你创建的两个文件。表情字符串是和本地的表情图片相对应的,所以应该先把本地的表情图片放到bundle中,然后再写个plist文件,将表情字符串和表情图片对应上。bundle和plist文件的创建,是在ios->Resource中。如图:

创建好的两个文件如图:

我们用tableview去显示相应的内容,首先,自定义tableviewcell。

ContentCell.m的相关实现

这样,就可以把表情字符串转换成对应的表情图片了,同时也可以做到tableviewcell的自适应高度。结果如图

如果有任何问题,欢迎指出或留言。

demo地址

emoji表情处理,emoji表情的编码解码

参考技术A emoji表情的编码解码

该方法实体编码后内容在页面是可以直接显示的,不需要解码,只有在js中才需要解码,同名的php函数具有相同编码功能

下面这句是js编码方法,直接带入字符串就可以直接复制到项目中使用了

function emoji_encode(e)var n=/[\ud800-\udbff][\udc00-\udfff]/g;return e=e.replace(n,function(e)var n,r;return 2===e.length?(n=e.charCodeAt(0),r=e.charCodeAt(1),"&#"+(1024*(n-55296)+65536+r-56320)+";"):e)

下面是经过上面编码后,在js环境下乳 uni-app的h5页面中调用,需要调用下面的解码才能正常显示。

function emoji_decode(e)var n=/\&#.*?;/g;return e.replace(n,function(e)var n,r,t;return 9==e.length?(t=parseInt(e.match(/[0-9]+/g)),n=Math.floor((t-65536)/1024)+55296,r=(t-65536)%1024+56320,unescape("%u"+n.toString(16)+"%u"+r.toString(16))):e)

php环境下的编码通过下面方法调用代入str参数就可以了实现编码了 

function emoji_encode($str)

    preg_match_all('/./u',$str,$matches);

    $unicodeStr = "";

    foreach($matches[0] as $m)

        $unicodeStr .=(strlen($m) >= 4 )?"&#".base_convert(bin2hex(iconv('UTF-8',"UCS-4",$m)),16,10).';':$m;

   

    return $unicodeStr;

以上是关于将表情字符串转化成对应的emoji表情图片的主要内容,如果未能解决你的问题,请参考以下文章

安卓emoji键盘怎么添加

怎么将emoji表情存入mysql

mysql不支持emoji表情的问题的解决方法

16进制 转成 Emoji表情

Emoji表情在Laravel应用中的集成使用

iOS开发emoji表情的输入思路