可这万恶的微信支持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开发自学
抱歉,评论功能暂时关闭!