1. 程式人生 > >mysql資料庫儲存emoji表情

mysql資料庫儲存emoji表情

/**
 *轉碼emoji(主要針對特殊符號和emoji表情)
 */
if (!function_exists('emojiEncode')) {
    function emojiEncode($str){
        if(!is_string($str))return $str;
        if(!$str || $str=='undefined')return '';

        $text = json_encode($str); //暴露出unicode
        $text = preg_replace_callback("/(\\\u[ed][0-9a-f]{3})/i",function($str){
            return addslashes($str[0]);
        },$text); //將emoji的unicode留下,其他不動,這裡的正則比原答案增加了d,因為我發現我很多emoji實際上是\ud開頭的,反而暫時沒發現有\ue開頭。
        return json_decode($text);
    }
}
/**
 *解碼emoji
 */
if (!function_exists('emojiDecode')) {
    function emojiDecode($str){
        $text = json_encode($str); //暴露出unicode
        $text = preg_replace_callback('/\\\\\\\\/i',function($str){
            return '\\';
        },$text); //將兩條斜槓變成一條,其他不動
        return json_decode($text);
    }
}