在 Laravel 中使用 emoji 表情
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 哦。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: