PHP 개발에서 이모티콘 표현과 관련된 여러 처리 방법

藏色散人
풀어 주다: 2023-04-07 13:26:01
앞으로
3730명이 탐색했습니다.

최근 몇 달간 위챗 개발을 많이 하고 있는데 위챗 닉네임 저장은 필수입니다

근데 이 망할 위챗은 이모티콘 표현을 닉네임으로 지원해서 좀 아쉽네요# 🎜🎜## 🎜🎜#일반적으로 MySQL 테이블을 디자인할 때는 UTF8 문자셋을 사용합니다. 이모티콘이 포함된 닉네임 필드를 삽입하면 전체 필드가 ​​빈 문자열이 됩니다. 무슨 일이야?

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

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

mysql 버전이 5.5.3 이상인 경우 UTF8이 가능하다고 확신합니다. utf8mb4 문자 세트로 직접 업그레이드

이 4바이트 utf8 인코딩은 기존 3바이트 utf8 문자 세트와 완벽하게 호환되며 이모티콘 표현을 직접 저장할 수 있어 최고의 솔루션입니다. 솔루션

바이트 증가로 인한 성능 손실은 몇몇 리뷰를 읽어보니 거의 무시할 정도입니다

2 base64 인코딩을 사용하세요# 🎜🎜##🎜🎜. #

어떤 이유로든 utf8mb4를 사용할 수 없는 경우 base64를 사용하여 국가를 저장할 수도 있습니다base64_encode와 같은 기능을 사용하여 이모티콘을 인코딩하면 데이터 테이블에 직접 저장됩니다. utf8 바이트 세트를 사용하고 꺼낼 때 디코딩하면 됩니다.

3. 이모티콘 표현을 제거하세요

emoji 표현은 귀찮은 점은 보관할 수 있어도 완벽하게 표시되지 않을 수 있다는 점입니다. PC, Android 등 iOS 이외의 플랫폼에서. 이모티콘을 표시해야 한다면 많은 이모티콘 이미지를 준비하고 타사 프런트엔드 라이브러리를 사용해야 합니다. 그럼에도 불구하고 이모티콘 이미지가 충분히 완성되지 않아 이모티콘 이미지를 표시할 수 없는 상황이 여전히 발생할 수 있습니다. 대부분의 비즈니스 시나리오에서는 이모티콘이 필요하지 않습니다. 적절하게 제거하는 것을 고려하고 다양한 비용을 절감할 수 있습니다

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

// 过滤掉emoji表情
function filterEmoji($str)
{
    $str = preg_replace_callback(
            '/./u',
            function (array $match) {
                return strlen($match[0]) >= 4 ? '' : $match[0];
            },
            $str);
     return $str;
 }
로그인 후 복사

기본 아이디어는 다음과 같습니다. traverse 문자열의 각 문자에 대해 문자 길이가 4바이트이면 제거됩니다.

위 내용은 PHP 개발에서 이모티콘 표현과 관련된 여러 처리 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:pein0119
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿