處理Emoji表情(unicode)
阿新 • • 發佈:2018-11-07
處理Emoji表情(unicode)
適用於Android 和 IOS
/** * @brief 幹掉emoji * @autho [email protected] * @param {String} $strText * @return {String} removeEmoji **/ static function escapeEmoji ($strText,$bool = false) { $preg = '/\\\ud([8-9a-f][0-9a-z]{2})/i'; if ($bool == true) { $boolPregRes = (preg_match($preg,json_encode($strText,true))); return $boolPregRes; } else { $strPregRes = (preg_replace($preg,'',json_encode($strText,true))); $strRet = json_decode($strPregRes,true); return $strRet; } }
原理:
PHP的正則無法解析 D800 之後的 unicode 字元
而一般的emoji都是在 D800到 D8FF 之間 (中文是:4E00-9FBF)
這樣寫
$preg = '/[\x{D800}-\x{D8FF}]+/iu';
是無效的。
所以只能通過json_encode轉成unicode,再通過正則來處理Unicode字元,最後再轉回普通字串