Maison >développement back-end >tutoriel php >Plusieurs méthodes de traitement impliquant des expressions emoji dans le développement PHP

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

藏色散人
藏色散人avant
2019-09-27 09:40:323764parcourir

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;
 }

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:PHP+Redis publier et s'abonnerArticle suivant:PHP+Redis publier et s'abonner