過濾四字節字符的背景是,mysql默認的utf-8是沒法寫入四字節字符的,一種解決方式是修改數據庫配置,另一種是過濾掉字符。更偏向於過濾掉這類字符,這樣就從入庫的根源解決問題。mysql
過濾通常方式都是使用正則,正則表達有兩種方式,一種是按照unicode 編碼,中emoji表情字段範圍刪除,兩位一種是求字節個數,更偏向於第二種,由於第一種,可能會出現區間段包含不完整問題。sql
// 過濾掉emoji表情
public static function filterEmoji($str)
{
$str = preg_replace_callback(
'/./u',
function (array $match) {
return strlen($match[0]) >= 4 ? '' : $match[0];
},
$str);
return $str;
}數據庫