1. 程式人生 > >php實現emoji表情包的資料庫儲存和展示

php實現emoji表情包的資料庫儲存和展示

在寫專案的時候遇到這樣一個問題,使用者在發表評論和回覆的時候,往往會將表情輸入,然後展示出來卻是一堆亂碼,賊噁心,最後我寫了一個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);
	}