您好,欢迎访问一九零五行业门户网

php emoji表情处理

背景
移动设备经常会发生用户发送的内容中包含emoji表情,未经处理,在显示时就是乱码。
解决方案
1.数据库支持:将mysql的编码从utf8转换成utf8mb4。 
2.匹配出内容中的emoji表情做过滤或替换
/** * 表情转换 更新到ios9.2涵盖编码范围 * @param $str * @return mixed */public static function emoji_to_html($str) { $regex = '/([0-9|#][\x{20e3}])|[\x{00ae}|\x{00a9}|\x{203c}|\x{2047}|\x{2048}|\x{2049}|\x{3030}|\x{303d}|\x{2139}|\x{2122}|\x{3297}|\x{3299}][\x{fe00}-\x{feff}]?|[\x{2190}-\x{21ff}][\x{fe00}-\x{feff}]?|[\x{2300}-\x{23ff}][\x{fe00}-\x{feff}]?|[\x{2460}-\x{24ff}][\x{fe00}-\x{feff}]?|[\x{25a0}-\x{25ff}][\x{fe00}-\x{feff}]?|[\x{2600}-\x{27bf}][\x{fe00}-\x{feff}]?|[\x{2900}-\x{297f}][\x{fe00}-\x{feff}]?|[\x{2b00}-\x{2bf0}][\x{fe00}-\x{feff}]?|[\x{1f000}-\x{1f6ff}][\x{fe00}-\x{feff}]?|[\x{1f900}-\x{1f9ff}][\x{fe00}-\x{feff}]?/u'; $str = preg_replace_callback($regex,function($matches){ $str = json_encode($matches[0]); $str = ''; return $str; },$str); return $str;}从数据库取出后再转回$string = preg_replace_callback('//is', self::preg_emoji, $string);/** * 输出emoji表情 * @param $matches * @return mixed */public static function preg_emoji($matches){ $str = $matches[0]; $str = str_replace('em:', '\u', $str); return $str;}
3.直接过滤掉
/** * 过滤表情 * @param $str * @return mixed */public static function filter_emoji($str) { $regex = '/(\\\u[ed][0-9a-f]{3})/i'; $str = json_encode($str); $str = preg_replace($regex, '', $str); return json_decode($str);}
以上就介绍了php emoji表情处理,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息