分享在PHP调微信接口获取用户名称并将名称写入数据库时报错的问题,有些微信用户喜欢在自己的头像中加一些Emoji表情或者一些特殊字符,导致我们写数据库的时候会报一些错误
例如:
Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F
本文提供两种解决方案,第一种风骚浪波型,把获取到的值进行编码,例如base64这种,取出来的时候在转回去。第二种猥琐发育型,怂一波把获取到的名称过滤掉或者替换emoji字符然后在写入数据库。
第二种方法,提供替换成?代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
function removeEmoji($text) { $clean_text = ""; // Match Emoticons $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u'; $clean_text = preg_replace($regexEmoticons, '?', $text); // Match Miscellaneous Symbols and Pictographs $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u'; $clean_text = preg_replace($regexSymbols, '?', $clean_text); // Match Transport And Map Symbols $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u'; $clean_text = preg_replace($regexTransport, '?', $clean_text); // Match Miscellaneous Symbols $regexMisc = '/[\x{2600}-\x{26FF}]/u'; $clean_text = preg_replace($regexMisc, '?', $clean_text); // Match Dingbats $regexDingbats = '/[\x{2700}-\x{27BF}]/u'; $clean_text = preg_replace($regexDingbats, '?', $clean_text); return $clean_text; } |
博主比较推荐第二种猥琐型,因为你使用第一种方式,太浪的话,如果离开微信平台你的emoji能不能解析出来都不知道,玩意出来的全是\xF0\x9F\x98\x84\xF0\x9F这种字符,就凉凉了。
一点PHP,每天一点技术分享。
2019年8月24日 下午5:56 沙发
学习了