Ich habe den Spitznamen des Benutzers über die WeChat-Schnittstelle gelesen, aber viele der Namen sind Sonderzeichen, wie im Bild oben gezeigt. Es ist bedeutungslos, wenn diese Sonderzeichen nicht in der MySQL-Datenbank gespeichert sind. Deshalb möchte ich es filtern und nur chinesische Buchstaben und Zahlen aus den Namenszeichen extrahieren. Wie schreibe ich das in PHP?
Ich habe den Spitznamen des Benutzers über die WeChat-Schnittstelle gelesen, aber viele der Namen sind Sonderzeichen, wie im Bild oben gezeigt. Es ist bedeutungslos, wenn diese Sonderzeichen nicht in der MySQL-Datenbank gespeichert sind. Deshalb möchte ich es filtern und nur chinesische Buchstaben und Zahlen aus den Namenszeichen extrahieren. Wie schreibe ich das in PHP?
Es macht keinen Sinn, wenn diese Sonderzeichen nicht in der MySQL-Datenbank gespeichert werden können
----Es ist sinnvoll, Symbole, versuchen Sie es mit Varbinary für Feldtypen
Tatsächlich können die Emoji-Emoticons nicht in MySQL gespeichert werden
Wenn diese Art von Ausdruck nicht direkt in Versionen unter MySQL5.5 verarbeitet und gespeichert wird, wird ein Fehler gemeldet
Sie können versuchen, die Datenbank zu ändern Zeichensatz auf utf8mb4
Es gibt Emojis auf Github. Der von Unicode extrahierte Bereich, der Referenzbereich kann beim Filtern abgeglichen werden
Erstens: Wenn Ihnen diese Dinge nichts bedeuten, bewahren Sie sie einfach nicht auf.
Es ist nutzlos, wenn Sie einen Teil davon extrahieren.
Für vollständigen Zugriff unterstützt MySQL einfach den Zeichensatz utf8mb4, der eine Obermenge von utf8 ist und abwärtskompatibel ist.
Der zweite Schritt ist die Transkodierung auf Codeebene. Sie können ihn kodieren, speichern, herausnehmen, dekodieren und erneut anzeigen.
Die letzte Methode ist diese. Tatsächlich kann man das Emoji einfach nicht speichern. Es ist in Ordnung, Emojis herauszufiltern.
<code>public static function emoji($text) { $clean_text = ""; // Match Emoticons $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u'; $clean_text = preg_replace($regexEmoticons, '', $text); // Match Miscellaneous Symbols and Pictographs $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u'; $clean_text = preg_replace($regexSymbols, '', $clean_text); // Match Transport And Map Symbols $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u'; $clean_text = preg_replace($regexTransport, '', $clean_text); // Match Miscellaneous Symbols $regexMisc = '/[\x{2600}-\x{26FF}]/u'; $clean_text = preg_replace($regexMisc, '', $clean_text); // Match Dingbats $regexDingbats = '/[\x{2700}-\x{27BF}]/u'; $clean_text = preg_replace($regexDingbats, '', $clean_text); $regexDingbats = '/[\x{231a}-\x{23ab}\x{23e9}-\x{23ec}\x{23f0}-\x{23f3}]/u'; $clean_text = preg_replace($regexDingbats, '', $clean_text); return $clean_text; }</code>
Quelle hier