Skip to content

PHP练习生

农工商实习两年半的PHP练习生

PHP 处理 微信用户昵称带有表情的问题

最近遇到一个问题,保存用户信息的时候,用户的昵称居然是空的,后面发现是因为用户的昵称中有表情,存进数据库时被过滤掉了,所以我们需要存数据库时做一下处理,取出来时也做处理。

第一种方法可以编码加密或解密

base64_encode(); //存储
base64_decode(); //取出

第二种方法是通过正则过滤

//表情写入数据库 | 参数:字符串$str,类型$type i是写入,o是输出
function input_phiz($str,$type="i")
{
    if($type=="i"){
        $str = preg_replace_callback('/[\xf0-\xf7].{3}/', function($r) {
            return '@E' . base64_encode($r[0]);
        }, $str);
    }else if($type=="o"){
        $str = preg_replace_callback('/@E(.{6}==)/', function($r) {
            return base64_decode($r[1]);
        }, $str);
    }
    return $str;
}

第三种方法

function removeEmoji($nickname) {

    $clean_text = "";

    //过滤字符集大于4的字符
    $clean_text = preg_replace_callback('/./u', function (array $match) {
        return strlen($match[0]) >= 4 ? '' : $match[0];
    }, $nickname);

    $clean_text = str_replace(array("\\","'",'"',':'), '', $clean_text);

    return $clean_text;
}
Avatar

我是农工商实习两年半的PHP练习生,我喜欢唱跳Rap,和篮球。。。

隐藏
变装