emoji 在生活中已經無處不見,微信暱稱大把的都在用 emoji,那麼在 Laravel 中如何對它進行正確的使用呢?
首先要了解一點基礎知識:
emoji 基本在各平臺都有預設支援,但是都是基於 unicode 的,比如 “?”,它並不是圖片,在不同的系統平臺可能還不一樣。
我們在網頁裡看到的 emoji 不一定是 unicode,因為我們可以用圖片來代替,這樣可以達到全平臺一致的表現。
首先在 Laravel 中我們要支援 emoji 第一步,資料庫字符集得為 utf8mb4,它是支援 emoji unicode 的字符集,比如我們要儲存微信使用者的暱稱。
另外一種是對使用者輸入內容的 emoji 短標記支援,比如 “:smile:” 代表 ?,“+1” 代表 “?” 等,更多短名稱或者叫短標記。你可以從這裡找到:Emoji cheat sheet for GitHub, Basecamp and other services。
那我們希望使用者輸入的這種標記轉換成 emoji 表情展示就得需要做一些程式碼轉換了。
這裡推薦使用我寫的一個 laravel 擴充包:overtrue/laravel-emoji。它基於 emojione/emojione。為我們提供了比較方便的 API 來在各種 emoji 展示方式間轉換。
Emoji::toImage(':smile:'); // <img class="emojione" alt="😄" title=":smile:" src="https://cdn.jsdelivr.net/emojione/assets/3.1/png/32/1f604.png"/>'
Emoji::toShort('?'); // :smile:
Emoji::shortnameToUnicode(':smile:'); // ?
// using helper
// default transform shorname to unicode, you can change it in config file.
emoji(':smile:'); // ?
// access emoji services, return \Emojione\Client instance.
app('emoji');
// or
app(\Emojione\Client::class);
更多使用請參考:overtrue/laravel-emoji。
我還造了很多實用的輪子,有興趣去我的個人主頁看看。別忘記了 star 哦。