Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP处理字符中的emoji表情

PHP处理字符中的emoji表情

作者头像
码农编程进阶笔记
发布于 2021-07-20 08:11:36
发布于 2021-07-20 08:11:36
1.5K00
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制

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

三个 PHP 内置函数:

mb_strlen

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )
 
// 返回具有 encoding 编码的字符串 str 包含的字符数。多字节的字符被计为 1。
// 如果给定的 encoding 无效则返回 FALSE

mb_substr

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
 
// 根据字符数执行一个多字节安全的 substr() 操作。位置是从 str 的开始位置进行计数。第一个字符的位置是 0。第二个字符的位置是 1。
// mb_substr() 函数根据 start 和 length 参数返回 str 中指定的部分。

strlen

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int strlen ( string $string )
// 返回给定的字符串 string 的长度。

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

函数如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 表情

函数如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 中的储存

MySQL 中使用 utf8mb4 字符集。

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农编程进阶笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
php 神坑substr() mb_substr() mb_subcut区别与联系
(1)为非负数,返回的字符串将从 string 的 start 位置开始, 至字符串结尾
一朵灼灼华
2022/08/05
9870
PHP常用函数 字符串处理函数
友情提示:此篇文章大约需要阅读 13分钟58秒,不足之处请多指教,感谢你的阅读。订阅本站
Meng小羽
2019/12/31
1.8K0
跟我学习php字符串常用函数-下篇
1> mixed parse_url ( string $url [, int $component = -1 ] )
潇洒哥和黑大帅
2018/10/23
4650
字符串翻转
php header("content-type:text/html;charset=utf-8"); /* * *功能:翻转中英文混合以及纯中文,英文字符串 mb_strlen() 获取字符的长度,第二个参数是编码 mb_substr() 获取字符的单个元素, krsort() 按照键值逆序排序数组 implode() 将数组拼接为字符串 explode() 使用字符串分隔字符串 */ function str_rev_utf8($str){ //判断输入的是不是utf8类型的字符,否则退出 if(!is
苦咖啡
2018/05/07
7620
php mbstring强大扩展
解释: str 是待匹配的字符串,包含了中文、英文和特殊字符。 KaTeX parse error: Undefined control sequence: \w at position 20: …是用于匹配的正则表达式,其中 \̲w̲+ 表示匹配一个或多个字母!!…str, reg) 初始化多字节正则表达式搜索,指定要搜索的字符串和正则表达式。 mb_ereg_search() 执行多字节正则表达式搜索,返回一个布尔值表示是否找到匹配。 如果搜索结果为假(即没有找到匹配),则输出 “null”。 如果搜索结果为真(找到了匹配),则使用 mb_ereg_search_getregs() 获取第一个匹配结果,并通过 var_dump() 输出。 使用 mb_ereg_search_regs() 获取下一个匹配结果,并通过循环重复此过程,直到没有更多的匹配结果。
贵哥的编程之路
2023/12/13
3760
php mbstring强大扩展
常用函数之字符串时间等
mysqli_real_escape_string() — 使用反斜线引用字符串 sql注入
老雷PHP全栈开发
2020/07/02
6600
php截取字符串几个实用的函数
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说php截取字符串几个实用的函数,希望能够帮助大家进步!!!
Java架构师必看
2022/01/13
1.2K0
关于PHP字符编码的函数区别
在以前的学习当中,比方说有一次的写采集过程中转换字符的编码的时候老是失败,转换的结果总没有完全输出,后来经过网络查询得知是iconv有一个“-”漏洞,所以我们有必要掌握PHP的另一个字符编码函数mb_convert_encoding。 mb_convert_encoding函数为php内部多字节字符串编码转换函数,可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题,使用非常方便,效率非常高,几乎支持所有编码。PHP 4 >= 4
似水的流年
2018/01/18
1.4K0
PHP细节
var_dump($obj->j); //null var_dump(isset($obj->j));//由于$j没有赋值,为空null,所以返回false //var_dump($obj->properties); var_dump(isset($obj->name));//私有或者保护属性不能被调用,false //output:bool(false),你的答案对了吗?为什么
唐成勇
2019/05/26
7990
PHP字符串和数组操作
*字符串查找 $email = 'name@example@.com'; $domain = strstr($email, '@'); echo $domain; // prints @exa
wangxl
2018/03/07
1.6K0
PHP字符串处理
在 PHP 中,字符串可以用单引号或双引号来表示。双引号字符串支持一些特殊字符的转义,如换行符(\n)和制表符(\t)。而单引号字符串不支持转义,需要用反斜杠(\)来表示单引号本身。例如:
堕落飞鸟
2023/04/27
1.7K0
php开发中处理emoji表情和颜文字的兼容问题
背景: 随着手机的普及,现在移动开发很火爆,已经远远超过了pc端。 在移动设备经常会发生用户发送的内容中包含emoji表情,在显示时就是乱码。 一般是因为Mysql表设计时,都是用UTF8字符集的。把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串。 这是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了。
全栈程序员站长
2021/11/08
1.2K0
简单入门PHP中的多字节字符串操作
什么是多字节的字符串操作呢?其实不少的同学可能都已经使用过了,但我们还是要从最基础的问题说起。
硬核项目经理
2021/08/06
1.2K0
Java 解决Emoji表情过滤问题
UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。
崔笑颜
2020/06/08
6.4K0
php笔记
接口返回格式 数组包对象 空的话 返回空数组,同一各客户端数据格式 IdArr 删除空值(去重(获取某值变成一维数组)) $idArr = array_filter(array_unique(array_column($list, 'id'))); 复制代码 php 生成文件txt到指定目录 file_put_contents("c:/zll.txt","内容"); 复制代码 php.ini设置上传临时文件路径 upload_tmp_dir = D:\owen\lswj\ 复制代码 基于php实现
OwenZhang
2021/12/08
3540
php笔记
不要小看小小的 emoji 表情
https://github.com/crossoverJie/cim/issues/12
IT大咖说
2019/09/17
1K0
不要小看小小的 emoji 表情
php版本的charCodeAt()函数
作者:matrix 被围观: 4,962 次 发布时间:2014-03-29 分类:兼容并蓄 零零星星 | 8 条评论 »
HHTjim 部落格
2022/09/26
1.7K0
PHP——emjoin表情存入数据库
mb_strlen() | strlen() | rawurlencode() | rawurldecode() | pre_replace_callback()
思索
2024/08/16
2140
PHP——emjoin表情存入数据库
相关推荐
php 神坑substr() mb_substr() mb_subcut区别与联系
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档