在 Laravel 中使用 emoji 表情

file
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="&#x1f604;" 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 协议》,转载必须注明作者和本文链接
本帖由 Summer 于 6年前 加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 14
朕略显ぼうっと萌

消灭0回复

6年前 评论
bestony

如果能够在package中提供一个类似 Laravel China 输入框里的 Emoji 组件就完美了。:+1:

6年前 评论

@bestony 职责不应该

6年前 评论
bestony

@overtrue 感谢提供解决方案。

6年前 评论

老师,安装的时候提示这个,是个啥原因.
Could not find package overtrue/laravel-emoji at any version for your minimum-stability (stable). Check the package spelling or your minimum-stability

6年前 评论

超哥,你用的作图工具是哪个呢?我来膜拜一下 :smile:

6年前 评论

@無铭 做啥图?设计?Sketch

6年前 评论

@overtrue 就是你写文章中的配图,Sketch 做的吗?

6年前 评论
GalaxyNo_1

:smile:

5年前 评论

按链接步骤来的,到发布资源就这样了file

2年前 评论
李小明 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!