php實現emoji表情包的資料庫儲存和展示
阿新 • • 發佈:2018-12-17
在寫專案的時候遇到這樣一個問題,使用者在發表評論和回覆的時候,往往會將表情輸入,然後展示出來卻是一堆亂碼,賊噁心,最後我寫了一個php方法,對其進行了轉化,廢話不多說,我們直接看程式碼吧!
/** 把使用者輸入的文字轉義(主要針對特殊符號和emoji表情) */ public function userTextEncode($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); } /** 解碼上面的轉義 */ public function userTextDecode($str){ $text = json_encode($str); //暴露出unicode $text = preg_replace_callback('/\\\\\\\\/i',function($str){ return '\\'; },$text); //將兩條斜槓變成一條,其他不動 return json_decode($text); }