ホームページ  >  記事  >  バックエンド開発  >  PHP プロジェクトで絵文字式を使用する場合の解決策

PHP プロジェクトで絵文字式を使用する場合の解決策

*文
*文オリジナル
2018-01-02 13:14:042248ブラウズ

日常生活において、ユーザーから送信されたコンテンツに絵文字表現が含まれている場合、それを処理しないと表示される際に文字化けしてしまうことがよくあります。そこで、この記事では、PHP WeChat 開発における絵文字表現に関する処理方法をいくつか紹介します。お役に立てれば幸いです。

背景

WeChat 開発を行っていると、WeChat ニックネームを保存することが不可欠であることがわかります。

しかし、邪悪な WeChat はニックネームとして絵文字表現をサポートしていますが、これは少し苦痛です

一般に、Mysql テーブルを設計するときは、UTF8 文字セットが使用されます。絵文字を含むニックネーム フィールドを insert すると、ニックネーム フィールドが消え、フィールド全体が空の文字列になります。どうしたの? insert一下就没了,整个字段变成了空字符串。这是怎么回事呢?

原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了。这要怎么办呢?我来介绍几种方法

解决方案

1、使用utf8mb4字符集

如果你的mysql版本>=5.5.3,你大可直接将utf8直接升级为utf8mb4字符集
这种4字节的utf8编码可完美兼容旧的3字节utf8字符集,并且可以直接存储emoji表情,是最好的解决方案
至于字节增大带来的性能损耗,我看过一些评测,几乎是可以忽略不计的

2、使用base64编码

如果你因为某些原因无法使用utf8mb4的话,你还可以使用base64来曲线救国
使用例如base64_encode

Mysql の utf8 文字セットは 3 バイトであるのに対し、絵文字は 4 バイトであるため、ニックネーム全体を保存できないことがわかりました。何をするか?いくつかの方法を紹介します

解決策

1. utf8mb4文字セットを使用します

mysqlバージョン>=5.5.3の場合は、utf8を直接変更できます。 code> は、<code>utf8mb4 文字セットに直接アップグレードされます
この 4 バイト utf8 エンコーディングは、古い 3 バイト utf8 文字セットと完全に互換性があり、絵文字表現を直接保存できます。これが最良のソリューションです
バイト数の増加によるパフォーマンスの低下については、いくつかのレビューを読みましたが、ほとんど無視できます

2. Base64 エンコードを使用します何らかの理由で utf8mb4 を使用できない場合は、 を使用することもできます。国を救うためのbase64

base64_encode などの関数を使用すると、エンコードされた絵文字を utf8 バイトセットのデータテーブルに直接保存し、取り出すときにデコードできます

3. 絵文字表現を削除する

絵文字表現は保存できても、完全に表示されない場合があります。 PCやAndroidなどiOS以外のプラットフォームでも。絵文字を表示する必要がある場合は、大量の絵文字画像を用意し、サードパーティのフロントエンド ライブラリを使用する必要があります。それでも、絵文字画像が十分ではないため、表示できない場合があります。ほとんどのビジネスシーンでは、絵文字は必要ありません。それを適切に削除して、さまざまなコストを節約することを検討できます

何度もグーグルで検索した後、最終的に信頼できて使用可能なコードを見つけました:

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

  return $str;
 }
関連する推奨事項:

🎜🎜🎜🎜🎜MySQL データ辞書を生成する方法php 🎜🎜🎜🎜🎜🎜phpはワードカウント機能を実装します🎜🎜🎜🎜🎜🎜PHPがバイナリデータを処理する方法🎜🎜🎜

以上がPHP プロジェクトで絵文字式を使用する場合の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。