3種方法輕松處理php開發(fā)中emoji表情的問題
來源:易賢網(wǎng) 閱讀:774 次 日期:2016-08-12 15:13:42
溫馨提示:易賢網(wǎng)小編為您整理了“3種方法輕松處理php開發(fā)中emoji表情的問題”,方便廣大網(wǎng)友查閱!

移動設(shè)備經(jīng)常會發(fā)生用戶發(fā)送的內(nèi)容中包含emoji表情,未經(jīng)處理,在顯示時就是亂碼。所以本文介紹在PHP微信開發(fā)中涉及到emoji表情的幾種處理方法。

背景

做微信開發(fā)的時候就會發(fā)現(xiàn),存儲微信昵稱必不可少。

可這萬惡的微信支持emoji表情做昵稱,這就有點(diǎn)頭疼了。

一般Mysql表設(shè)計時,都是用UTF8字符集的。把帶有emoji的昵稱字段往里面insert一下就沒了,整個字段變成了空字符串。這是怎么回事呢?

原來是因?yàn)镸ysql的utf8字符集是3字節(jié)的,而emoji是4字節(jié),這樣整個昵稱就無法存儲了。這要怎么辦呢?我來介紹幾種方法

解決方案

1、使用utf8mb4字符集

如果你的mysql版本>=5.5.3,你大可直接將utf8直接升級為utf8mb4字符集

這種4字節(jié)的utf8編碼可完美兼容舊的3字節(jié)utf8字符集,并且可以直接存儲emoji表情,是最好的解決方案

至于字節(jié)增大帶來的性能損耗,我看過一些評測,幾乎是可以忽略不計的

2、使用base64編碼

如果你因?yàn)槟承┰驘o法使用utf8mb4的話,你還可以使用base64來曲線救國

使用例如base64_encode之類的函數(shù)編碼過后的emoji可以直接存儲在utf8字節(jié)集的數(shù)據(jù)表中,取出時decode一下即可

3、干掉emoji表情

emoji表情是個麻煩的東西,即使你能存儲,也不一定能完美顯示。在iOS以外的平臺上,例如PC或者android。如果你需要顯示emoji,就得準(zhǔn)備一大堆emoji圖片并使用第三方前端類庫才行。即便如此,還是可能因?yàn)閑moji圖片不夠全而出現(xiàn)無法顯示的情況在大多數(shù)業(yè)務(wù)場景下,emoji也不是非要不可的。我們可以適當(dāng)?shù)乜紤]干掉它,節(jié)約各種成本

經(jīng)過一番苦苦的google,終于找到靠譜能用的代碼:

// 過濾掉emoji表情

function filterEmoji($str)

{

 $str = preg_replace_callback(

   '/./u',

   function (array $match) {

    return strlen($match[0]) >= 4 ? '' : $match[0];

   },

   $str);

  return $str;

 }

以上就是為大家總結(jié)的PHP微信開發(fā)中涉及到emoji表情的幾種處理方法,基本思想就是遍歷字符串中的每個字符,如果該字符的長度為4個字節(jié),就將其刪除。希望大家喜歡!

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:3種方法輕松處理php開發(fā)中emoji表情的問題
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)