Heim >Backend-Entwicklung >PHP-Tutorial >Mehrere Verarbeitungsmethoden mit Emoji-Ausdrücken in der PHP-Entwicklung

Mehrere Verarbeitungsmethoden mit Emoji-Ausdrücken in der PHP-Entwicklung

藏色散人
藏色散人nach vorne
2019-09-27 09:40:323762Durchsuche

In den letzten Monaten habe ich viel an der WeChat-Entwicklung gearbeitet und das Speichern von WeChat-Spitznamen ist unerlässlich

Aber dieser verdammte WeChat unterstützt Emoji-Ausdrücke als Spitznamen, was ein bisschen schmerzhaft ist

Allgemeines Mysql Beim Entwerfen von Tabellen wird der UTF8-Zeichensatz verwendet. Fügen Sie das Spitznamenfeld mit Emoji ein und es verschwindet. Das gesamte Feld wird zu einer leeren Zeichenfolge. Was ist los?

Es stellt sich heraus, dass der UTF8-Zeichensatz von MySQL 3 Byte groß ist, während Emoji 4 Byte groß ist, sodass nicht der gesamte Spitzname gespeichert werden kann. Was zu tun? Lassen Sie mich mehrere Methoden vorstellen

1. Verwenden Sie den utf8mb4-Zeichensatz

Wenn Ihre MySQL-Version >=5.5.3 ist, können Sie utf8 direkt aktualisieren Für den utf8mb4-Zeichensatz

Diese 4-Byte-UTF8-Codierung ist perfekt kompatibel mit dem alten 3-Byte-UTF8-Zeichensatz und kann Emoji-Ausdrücke direkt speichern, was die beste Lösung ist

Ich habe einige Rezensionen gelesen und stellte fest, dass der Leistungsverlust, der durch die Erhöhung der Bytes verursacht wird, nahezu vernachlässigbar ist

2. Verwenden Sie die Base64-Codierung

Wenn Sie aus bestimmten Gründen utf8mb4 nicht verwenden können, dann Sie können das Land auch mit base64 speichern. Mit Funktionen wie base64_encode können Sie das codierte Emoji direkt in der Datentabelle des utf8-Bytesatzes speichern 🎜>

3. Entfernen Sie Emoji-Ausdrücke

Emoji-Ausdrücke sind eine problematische Sache. Auch wenn Sie sie speichern können, werden sie möglicherweise nicht perfekt angezeigt. Auf anderen Plattformen als iOS, wie PC oder Android. Wenn Sie Emojis anzeigen müssen, müssen Sie viele Emoji-Bilder vorbereiten und eine Front-End-Bibliothek eines Drittanbieters verwenden. Dennoch kann es immer noch Situationen geben, in denen die Emoji-Bilder nicht angezeigt werden können, weil die Emoji-Bilder nicht vollständig genug sind.In den meisten Geschäftsszenarien sind Emojis nicht erforderlich. Wir können darüber nachdenken, es angemessen zu entfernen und verschiedene Kosten zu sparen.

Nach langem Suchen haben wir endlich einen zuverlässigen und verwendbaren Code gefunden:

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

Die Grundidee besteht darin, die Zeichenfolge For zu durchlaufen Jedes Zeichen wird gelöscht, wenn die Länge des Zeichens 4 Byte beträgt.

Das obige ist der detaillierte Inhalt vonMehrere Verarbeitungsmethoden mit Emoji-Ausdrücken in der PHP-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:pein0119. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen