[ 拓展包: Laravel-Emoji ] 在Laravel中集成使用 Emoji 表情

Song2345 次浏览0个评论2017年07月28日

1、简介

在社交网络如此发达的今天,Emoji包无处不在,无论是QQ、微信、微博还是各大论坛,到处都是表情包的身影。作为一个开发者,你可能需要在应用中提供多种表情以供用户评论、交流时使用。Github地址:https://github.com/unicodeveloper/laravel-emoji

PHP 5 已经支持将Unicode字符串转化为表情,但是比较复杂:

<?php
echo json_decode('"\uD83D\uDE00"');

PHP 7Unicode 字符串提供了更好的支持,我们可以更方便地显示表情:

<?php
echo "\u{1F60E}";

当然,这样的编码是不友好的,我们需要使用可读性更好的方式来实现表情显示,幸运的是,在Laravel中,我们可以通过 Laravel Emoji 这个拓展包来实现这个目的。

2、安装

系统要求:PHP 7.0+/HHVM 3.3+,Composer

要安装最新版本的 Laravel Emoji,在 composer.json 中声明如下依赖:

"unicodeveloper/laravel-emoji": "1.0.*"

然后运行 composer install 或 composer update 来下载并安装该扩展包。

安装完成之后,需要注册服务提供者,在配置文件 app.php 中,添加如下这段代码到 providers 数组:

Unicodeveloper\Emoji\EmojiServiceProvider::class

同时,不要忘了注册门面到 aliases 数组:

'aliases' => [    
    ...    
    'Emoji' => Unicodeveloper\Emoji\Facades\Emoji::class,
    ...
]

3、使用

Laravel Emoji 为我们提供了多种显示表情的方法,然后通过 Emoji 门面统一调用,怎么调用很简单,在Controller中引入Emoji,然后运行即可:

<?php
Emoji::findByAlias("sweat_smile");Emoji::findByName("heart_eyes");

4、其它使用方法

默认在/vendor/unicodeveloper/laravel-emoji/src/Emojis/emoji.php中定义了17个表情,需要更多的表情,你需要自己去获取更多的 Emoji 表情,请查看完整Emoji表情列表。但是个人觉得不是很好用,还是前端使用方便一点,他这个你需要改一下源码,一次性获取所有的Emoji表情!

5、php转义emoji表情,让其可以存入utf8的数据库,解决存储通讯录或者聊天记录数据丢失问题!

emoji默认是不能存入mysql数据库的,使用如下代码过滤一下

<?php
function utf8_to_unicode_str($utf8)
{
    $return = '';

    for ($i = 0; $i < mb_strlen($utf8); $i++) {

        $char = mb_substr($utf8, $i, 1);

        // 3字节是汉字,不转换,4字节才是 emoji
        if (strlen($char) > 3) {
            $char = trim(json_encode($char), '"');
        }
        $return .= $char;
    }
    return $return;
}

$t = '我爱吃/特殊符号/啦!';

var_dump(utf8_to_unicode_str($t));

提交评论

请登录后评论

用户评论

    当前暂无评价,快来发表您的观点吧...

更多相关好文

    当前暂无更多相关好文推荐...