84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
我通过微信接口读用户的昵称,但好多名字都是一些特殊字符,如上图,这些特殊字符存不进mysql数据库也没什么意义。所以我想过滤一下,名字字符中只把汉字字母与数字提取出来。这个用PHP怎么写。
欢迎选择我的课程,让我们一起见证您的进步~~
这些特殊字符存不进mysql数据库也没什么意义 ----有意义的,图标啊,字段类型用 varbinary 试试
其实是emoji表情符号存不进mysql这种表情不处理直接存储到mysql5.5以下的版本会报错可以修改数据库字符集为utf8mb4试试github上有emoji unicode提取的范围,参照范围在过滤的时候进行匹配即可
首先,这些东西如果对你没有什么意义,不存就好了。
你提取出部分,也没什么用。
完整的存取,mysql是支持的,转换下字符集就好了,utf8mb4是utf8的超集,向下兼容的,修改这个是最完美的解决方法。
其次就是代码层面的转码,编码一下,再存,取出来反编码再展示,也可以。
最后就是这个方法,其实你只是存不进emoji而已。过滤掉emoji就OK。
public static function emoji($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); $regexDingbats = '/[\x{231a}-\x{23ab}\x{23e9}-\x{23ec}\x{23f0}-\x{23f3}]/u'; $clean_text = preg_replace($regexDingbats, '', $clean_text); return $clean_text; }
来源在这里
供参考:https://segmentfault.com/a/11...
echo match('&^%/php从字符串中提取汉字字母和数字');// php从字符串中提取汉字字母和数字 function match($char) { preg_match_all('/[\x{4e00}-\x{9fa5}a-zA-Z0-9]/u' , $char, $result); return implode('', $result[0]); }
这些特殊字符存不进mysql数据库也没什么意义
----有意义的,图标啊,字段类型用 varbinary 试试
其实是emoji表情符号存不进mysql
这种表情不处理直接存储到mysql5.5以下的版本会报错
可以修改数据库字符集为utf8mb4试试
github上有emoji unicode提取的范围,参照范围在过滤的时候进行匹配即可
首先,这些东西如果对你没有什么意义,不存就好了。
你提取出部分,也没什么用。
完整的存取,mysql是支持的,转换下字符集就好了,utf8mb4是utf8的超集,向下兼容的,修改这个是最完美的解决方法。
其次就是代码层面的转码,编码一下,再存,取出来反编码再展示,也可以。
最后就是这个方法,其实你只是存不进emoji而已。过滤掉emoji就OK。
来源在这里
供参考:https://segmentfault.com/a/11...