Home  >  Article  >  Backend Development  >  Several processing methods involving emoji expressions in PHP development

Several processing methods involving emoji expressions in PHP development

藏色散人
藏色散人forward
2019-09-27 09:40:323652browse

In recent months, I have been doing a lot of WeChat development, and it is essential to store WeChat nicknames

But this damn WeChat supports emoji expressions as nicknames, which is a bit painful

General Mysql When designing tables, the UTF8 character set is used. Insert the nickname field with emoji into it and it will disappear. The entire field will become an empty string. What's going on?

It turns out that the utf8 character set of Mysql is 3 bytes, and emoji is 4 bytes, so the entire nickname cannot be stored. What to do? Let me introduce several methods

1. Use utf8mb4 character set

If your mysql version >=5.5.3, you can directly upgrade utf8 directly For the utf8mb4 character set

This 4-byte utf8 encoding is perfectly compatible with the old 3-byte utf8 character set, and can directly store emoji expressions, which is the best solution

As for The performance loss caused by the increase in bytes, I have read some reviews, is almost negligible

2. Use base64 encoding

If you have some reasons If you cannot use utf8mb4, you can also use base64 to save the country.

The emoji encoded using a function such as base64_encode can be directly stored in the data table of the utf8 byte set, and you can decode it when taking it out.

3. Get rid of emoji expressions

Emoji expressions are a troublesome thing. Even if you can store them, they may not be displayed perfectly. On platforms other than iOS, such as PC or android. If you need to display emoji, you have to prepare a lot of emoji images and use a third-party front-end library. Even so, there may still be situations where the emoji images cannot be displayed because the emoji images are not complete enough

In most business scenarios, emojis are not necessary. We can consider getting rid of it appropriately and save various costs

After a lot of hard google, we finally found a reliable and usable code:

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

The basic idea is to traverse the string For each character, if the length of the character is 4 bytes, it is deleted.

The above is the detailed content of Several processing methods involving emoji expressions in PHP development. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:pein0119. If there is any infringement, please contact admin@php.cn delete