微信昵称在数据库存储处理,解决显示乱码方案

微信昵称在数据库存储处理,解决显示乱码方案


原理:我们先将微信昵称编码存入数据库,显示的时候解码,就可以避免数据库无法直接存储微信昵称中的特殊字符。

一、定义编码解码类

<?php
/**
 * Created by PhpStorm.
 * User: chen
 * Date: 2020/2/18
 * Time: 14:35
 */

namespace wechat\lib;


class Emoji
{
    //对emoji表情转义
    static function encode($str){
        $strEncode = '';

        $length = mb_strlen($str,'utf-8');

        for ($i=0; $i < $length; $i++) {
            $_tmpStr = mb_substr($str,$i,1,'utf-8');
            if(strlen($_tmpStr) >= 4){
                $strEncode .= '[[EMOJI:'.rawurlencode($_tmpStr).']]';
            }else{
                $strEncode .= $_tmpStr;
            }
        }

        return $strEncode;
    }

    //对emoji表情转反义
    static function decode($str){
        $strDecode = preg_replace_callback('|\[\[EMOJI:(.*?)\]\]|', function($matches){
            return rawurldecode($matches[1]);
        }, $str);
        return $strDecode;
    }
}

二、使用

    // 获取时解码
    public function getNameAttr($value)
    {
        return Emoji::decode($value);
    }

   // 存储时编码
    public function setNameAttr($value)
    {
        return Emoji::encode($value);
    }

 

相关推荐
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值