php代码将utf8mb4转换成mysql低版本支持的utf8编码

最近做开发 发现,有些字符不能存进mysql,后来百度后,得出的结论是,mysql的utf8编码并不是真正完整的utf8,在mysql新版本里选择utf8mb4这才是完整的utf8编码。
手机上有些图标比如: Emoji表情图标 在mysql里面需要选择utf8mb4才能存储和显示,网上大部分用mysql存Emoji表情相关的解决办法是 把mysql的字符集改为 utf8mb4,但是 最近有个需求就是截取掉对于mysql的utf8mb4的字符集。想了几天,突然想在wordpress看代码,结果 果然找到,分享之。此方案为过滤掉 utf8mb4 的字符

我这里的mysql本来就不支持utf8mb4的,所以就这样基本上看不到效果….

方法一:

    $str = '□测试,测试!123□';     $charset = 'utf8';     $regex = '/         (             (?: [x00-x7F]                  # single-byte sequences   0xxxxxxx             |   [xC2-xDF][x80-xBF]       # double-byte sequences   110xxxxx 10xxxxxx             |   xE0[xA0-xBF][x80-xBF]   # triple-byte sequences   1110xxxx 10xxxxxx * 2             |   [xE1-xEC][x80-xBF]{2}             |   xED[x80-x9F][x80-xBF]             |   [xEE-xEF][x80-xBF]{2}';      if ( 'utf8mb4' === $charset ) {         $regex .= '             |    xF0[x90-xBF][x80-xBF]{2} # four-byte sequences   11110xxx 10xxxxxx * 3             |    [xF1-xF3][x80-xBF]{3}             |    xF4[x80-x8F][x80-xBF]{2}         ';     }      $regex .= '){1,40}                          # ...one or more times         )         | .                                  # anything else         /x';     $str1 = preg_replace( $regex, '$1', $str );     var_dump($str1);

方法二:

    $str1 = preg_replace('/[x{10000}-x{10FFFF}]/u', '', $str);     var_dump($str1); 

腾讯云限时秒杀【点击购买】

搬瓦工,CN2高速线路,1GB带宽,电信联通优化KVM,延迟低,速度快,建站稳定,搬瓦工BandwagonHost VPS优惠码BWH26FXH3HIQ,支持<支付宝> 【点击购买】!

Vultr$3.5日本节点,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快【点击购买】!

阿里云香港、新加坡VPS/1核/1G/25G SSD/1T流量/30M带宽/年付¥288【点击购买】