zoukankan      html  css  js  c++  java
  • PHP处理字符中的emoji表情

    目录

    • 判断字符串中是否含有 emoji 表情

    • 移除字符串中的 emoji 表情

    • 含有 emoji 表情的字符串在 MySQL 中的储存

    utf-8 编码的 emoji 表情或者某些特殊字符占用 4 个字节。utf-8 编码的常用中文字符占用 3 个字节。

    一、判断字符串中是否含有 emoji 表情

    三个 PHP 内置函数:

    mb_strlen — 获取字符串的长度

    mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )
    
    获取一个 string 的长度。

    mb_substr — 获取部分字符串

    string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
    
    根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1,以此类推。 

    strlen

    int strlen ( string $string )
    
    返回给定的字符串 string 的长度。

    函数如下:

    function haveEmojiChar($str)
    {
        $mbLen = mb_strlen($str);
        $strArr = [];
        for ($i = 0; $i < $mbLen; $i++) {
            $strArr[] = mb_substr($str, $i, 1, 'utf-8');
            if (strlen($strArr[$i]) >= 4) {
                return true;
            }
        }
        return false;
    }

    二、移除字符串中的 emoji 表情

    函数如下:

    function removeEmojiChar($str)
    {
        $mbLen = mb_strlen($str);
        $strArr = [];
        for ($i = 0; $i < $mbLen; $i++) {
            $mbSubstr = mb_substr($str, $i, 1, 'utf-8');
            if (strlen($mbSubstr) >= 4) {
                continue;
            }
            $strArr[] = $mbSubstr;
        }
        return implode('', $strArr);
    }

    三、含有 emoji 表情的字符串在 MySQL 中的储存

    1、MySQL 中使用 utf8mb4 字符集。

    2、PHP 对字符串进行 base64 编码,从数据库中取出时再对字符串进行解码。

    3、直接移除字符串中的 emoji 表情(该方法简单粗暴)

    链接:https://mp.weixin.qq.com/s/uhsbqluT_yVEtrCTx87KZw

  • 相关阅读:
    E
    J
    D
    并查集加优先队列
    动态规划-数位DPwindy
    动态规划-分组背包问题
    动态规划-LIS1
    动态规划-01背包
    [cf1434E]A Convex Game
    [atAGC106F]Figures
  • 原文地址:https://www.cnblogs.com/clubs/p/13269745.html
Copyright © 2011-2022 走看看