Plusieurs méthodes de traitement impliquant des expressions emoji dans le développement PHP

藏色散人
Libérer: 2023-04-07 13:26:01
avant
3728 Les gens l'ont consulté

Ces derniers mois, j'ai fait beaucoup de développement WeChat, et stocker les surnoms WeChat est essentiel

Mais ce foutu WeChat prend en charge les expressions emoji comme surnoms, ce qui est un peu pénible

Général Mysql Lors de la conception de tables, le jeu de caractères UTF8 est utilisé. Insérez le champ de surnom avec emoji et il disparaîtra. Le champ entier deviendra une chaîne vide. Que se passe-t-il?

Il s'avère que le jeu de caractères utf8 de Mysql est de 3 octets, tandis que celui des emoji est de 4 octets, donc le surnom complet ne peut pas être stocké. Ce qu'il faut faire? Permettez-moi de vous présenter plusieurs méthodes

1. Utilisez le jeu de caractères utf8mb4

Si votre version de MySQL >=5.5.3, vous pouvez directement mettre à niveau utf8 pour le jeu de caractères utf8mb4.

Cet encodage utf8 sur 4 octets est parfaitement compatible avec l'ancien jeu de caractères utf8 sur 3 octets, et peut stocker directement des expressions emoji, ce qui est la meilleure solution

Quant à j'ai lu quelques critiques et a constaté que la perte de performances causée par l'augmentation du nombre d'octets est presque négligeable

2. Utilisez l'encodage base64

Si vous avez des raisons Si vous ne parvenez pas à utiliser utf8mb4 , vous pouvez également utiliser base64 pour enregistrer le pays.

À l'aide de fonctions telles que base64_encode, l'emoji encodé peut être directement stocké dans la table de données de l'ensemble d'octets utf8. Il suffit de le décoder lors de sa suppression

3. Débarrassez-vous des expressions emoji

Les expressions emoji sont une chose gênante Même si vous pouvez les stocker, elles peuvent ne pas s'afficher parfaitement. Sur des plateformes autres qu'iOS, comme PC ou Android. Si vous devez afficher des emoji, vous devez préparer de nombreuses images emoji et utiliser une bibliothèque frontale tierce. Même ainsi, il peut toujours y avoir des situations dans lesquelles les images emoji ne peuvent pas être affichées car elles ne sont pas suffisamment complètes

Dans la plupart des scénarios professionnels, les emojis ne sont pas nécessaires. Nous pouvons envisager de nous en débarrasser de manière appropriée et économiser divers coûts

Après de nombreuses recherches sur Google, nous avons finalement trouvé un code fiable et utilisable :

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

L'idée de base est de parcourir la chaîne For chaque caractère, si la longueur du caractère est de 4 octets, il est supprimé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:pein0119
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal