luojianqun

微信开发时候,有些用户使用Emoji表情作为用户昵称,导致数据库保存昵称时候不识别导致昵称为空,现在提出以下解决方案:

/**
  +----------------------------------------------------------
 * 过滤用户昵称里面的特殊字符
  +----------------------------------------------------------
 * @param string    $str   待输出的用户昵称
  +----------------------------------------------------------
 */
function jsonName($str) {
    if($str){
        $tmpStr = json_encode($str);
        $tmpStr2 = preg_replace("#(\\\ud[0-9a-f]{3})#ie","",$tmpStr);
        $return = json_decode($tmpStr2);
        if(!$return){
            return jsonName($return);
        }
    }else{
        $return = \'微信用户-\'.time();
    }    
    return $return;
}

原理是判断nickname是否为空,如为空,则随机一个名称保存,如存在表情,过滤掉表情保存。
过滤表情那一行,我这里看到的表情json_encode之后前两位是ud,因此采用了这个,你们可以根据自己的实际情况修改。
还有就是,有人使用http://www.zhihu.com/question/37131723?sort=created这个解决方案,因人而异,大家都可以借鉴,同时如有更好的方案,请留言分享一下

分类:

技术点:

相关文章:

  • 2021-06-27
  • 2022-12-23
  • 2021-12-24
  • 2021-11-27
  • 2021-05-09
  • 2022-03-02
  • 2022-12-23
  • 2022-03-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-10
  • 2021-07-24
  • 2021-12-31
  • 2022-12-23
  • 2021-12-21
相关资源
相似解决方案