PHP 开发中涉及到emoji表情的几种处理方法-php教程

资源魔 34 0
比来几个月做微信开发比拟多,存储微信昵称必不成少

可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了

普通Mysql表设计时,都是用UTF8字符集的。把带有emoji的昵称字段往外面insert一下就没了,整个字段变为了空字符串。这是怎样回事呢?

原来是由于Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无奈存储了。这要怎样办呢?我来引见几种办法

一、应用utf8mb4字符集

假如你的mysql版本>=5.5.3,你年夜可间接将utf8间接晋级为utf8mb4字符集

这类4字节的utf8编码可完满兼容旧的3字节utf8字符集,而且能够间接存储emoji表情,是最佳的处理计划

至于字节增年夜带来的功能损耗,我看过一些评测,简直是能够疏忽没有计的

二、应用base64编码

假如你由于某些缘由无奈应用utf8mb4的话,你还能够应用base64来曲线救国

应用例如base64_encode之类的函数编码当时的emoji能够间接存储正在utf8字节集的数据表中,掏出时decode一下便可

三、干掉emoji表情

emoji表情是个费事的货色,即便你能存储,也纷歧定能完满显示。正在iOS之外的平台上,例如PC或许android。假如你需求显示emoji,就患上预备一年夜堆emoji图片并应用第三方前端类库才行。即使如斯,仍是可能由于emoji图片不敷全而呈现无奈显示的状况

正在年夜少数营业场景下,emoji也没有长短要不成的。咱们能够适外地思考干掉它,节约各类老本

通过一番苦苦的谷歌,终于找到靠谱能用的代码:

// 过滤掉emoji表情
function filterEmoji($str)
{
    $str = preg_replace_callback(
            '/./u',
            function (array $match) {
                return strlen($match[0]) >= 4 ? '' : $match[0];
            },
            $str);
     return $str;
 }

根本思维就是遍历字符串中的每一个字符,假如该字符的长度为4个字节,就将其删除了。

以上就是PHP 开发中触及到emoji表情的几种解决办法的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!