>  기사  >  백엔드 개발  >  PHP 프로젝트에서 이모티콘 표현을 사용하는 솔루션

PHP 프로젝트에서 이모티콘 표현을 사용하는 솔루션

*文
*文원래의
2018-01-02 13:14:042249검색

실생활에서 사용자가 보낸 콘텐츠에 이모티콘 표현이 포함되어 있는 경우 처리하지 않으면 표시될 때 깨질 수 있는 경우가 종종 있습니다. 따라서 이 기사에서는 PHP WeChat 개발에서 이모티콘 표현과 관련된 여러 처리 방법을 소개합니다. 그것이 모두에게 도움이 되기를 바랍니다.

Background

WeChat 개발을 하다 보면 WeChat 닉네임을 저장하는 것이 필수적이라는 것을 알게 될 것입니다.

근데 사악한 WeChat은 이모티콘 표현을 닉네임으로 지원하는데 좀 아쉽네요

일반적으로 MySQL 테이블을 디자인할 때 UTF8 문자 집합을 사용합니다. 내부에 이모티콘이 포함된 닉네임 필드를 삽입하면 해당 필드가 사라지고 전체 필드가 ​​빈 문자열이 됩니다. 무슨 일이야? insert一下就没了,整个字段变成了空字符串。这是怎么回事呢?

原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了。这要怎么办呢?我来介绍几种方法

解决方案

1、使用utf8mb4字符集

如果你的mysql版本>=5.5.3,你大可直接将utf8直接升级为utf8mb4字符集
这种4字节的utf8编码可完美兼容旧的3字节utf8字符集,并且可以直接存储emoji表情,是最好的解决方案
至于字节增大带来的性能损耗,我看过一些评测,几乎是可以忽略不计的

2、使用base64编码

如果你因为某些原因无法使用utf8mb4的话,你还可以使用base64来曲线救国
使用例如base64_encode

Mysql의 utf8 문자 집합은 3바이트인 반면 이모티콘은 4바이트이므로 닉네임 전체를 저장할 수 없는 것으로 나타났습니다. 무엇을 해야 할까요? 여러 가지 방법을 소개하겠습니다

Solutions

1. utf8mb4 문자 집합을 사용하세요

mysql 버전이 >=5.5.3인 경우 utf8을 직접 변경할 수 있습니다. code>는 <code>utf8mb4 문자 집합으로 직접 업그레이드됩니다
이 4바이트 utf8 인코딩은 기존 3바이트 utf8 문자 집합과 완벽하게 호환되며 이모티콘 표현을 직접 저장할 수 있어 최고의 솔루션입니다
바이트 증가로 인한 성능 손실에 대해서는 일부 리뷰를 읽었으며 거의 ​​무시할 수 있습니다

2. base64 인코딩을 사용하세요 어떤 이유로 utf8mb4를 사용할 수 없는 경우 를 사용할 수도 있습니다. base64로 나라를 구한다

base64_encode 등의 함수를 사용하면 인코딩된 이모지를 utf8 바이트 세트의 데이터 테이블에 직접 저장하고 꺼낼 때 디코딩할 수 있다

3. 이모티콘 표현 없애기

이모티콘 표현은 저장해도 완벽하게 표시되지 않을 수 있어 번거로운 작업입니다. PC, Android 등 iOS 이외의 플랫폼에서. 이모티콘을 표시해야 하는 경우 이모티콘 이미지를 많이 준비하고 타사 프런트엔드 라이브러리를 사용해야 합니다. 그럼에도 불구하고 이모티콘 이미지가 충분히 완성되지 않아 표시가 불가능할 수 있습니다. 대부분의 비즈니스 시나리오에서는 이모티콘이 필요하지 않습니다. 적절하게 제거하는 것을 고려하고 다양한 비용을 절약할 수 있습니다

많은 구글링 끝에 마침내 신뢰할 수 있고 사용 가능한 코드를 찾았습니다:

// 过滤掉emoji表情
function filterEmoji($str)
{
 $str = preg_replace_callback(
   &#39;/./u&#39;,
   function (array $match) {
    return strlen($match[0]) >= 4 ? &#39;&#39; : $match[0];
   },
   $str);

  return $str;
 }
관련 권장 사항:

🎜🎜🎜🎜🎜How to generate mysql data Dictionary in php 🎜🎜🎜🎜🎜🎜php는 단어 세기 기능을 구현합니다🎜🎜🎜🎜🎜🎜PHP가 바이너리 데이터를 처리하는 방법🎜🎜🎜

위 내용은 PHP 프로젝트에서 이모티콘 표현을 사용하는 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.