ホームページ > よくある問題 > PHPは文字内の絵文字表現を扱う(判定・削除・保存)

PHPは文字内の絵文字表現を扱う(判定・削除・保存)

藏色散人
リリース: 2020-07-08 13:21:22
転載
4849 人が閲覧しました

PHPは文字内の絵文字表現を扱う(判定・削除・保存)

ディレクトリ

  • 文字列に絵文字表現が含まれているかどうかを確認します
  • 文字列内の絵文字表現を削除します
  • MySQL での絵文字表現を含む文字列のストレージ

utf-8 でエンコードされた絵文字表現または一部の特殊文字は 4 バイトを占有します。 UTF-8 でエンコードされた一般的な中国語の文字は 3 バイトを占めます。

文字列に絵文字表現が含まれているかどうかを確認します

3 つの PHP 組み込み関数:

  • mb_strlen
mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )


// 返回具有 encoding 编码的字符串 str 包含的字符数。 多字节的字符被计为 1。
// 如果给定的 encoding 无效则返回 FALSE。
ログイン後にコピー
  • mb_substr
string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )

// 根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1。
// mb_substr() 函数根据 start 和 length 参数返回 str 中指定的部分。
ログイン後にコピー
  • strlen
int strlen ( string $string )

// 返回给定的字符串 string 的长度。
ログイン後にコピー

関数は次のとおりです:

function haveEmojiChar($str)
{
    $mbLen = mb_strlen($str);
    
    $strArr = [];
    for ($i = 0; $i < $mbLen; $i++) {
        $strArr[] = mb_substr($str, $i, 1, &#39;utf-8&#39;);
        if (strlen($strArr[$i]) >= 4) {
            return true;
        }
    }
    
    return false;
}
ログイン後にコピー

絵文字を文字列 絵文字

関数は次のとおりです:

function removeEmojiChar($str)
{
    $mbLen = mb_strlen($str);
    
    $strArr = [];
    for ($i = 0; $i < $mbLen; $i++) {
        $mbSubstr = mb_substr($str, $i, 1, &#39;utf-8&#39;);
        if (strlen($mbSubstr) >= 4) {
            continue;
        }
        $strArr[] = $mbSubstr;
    }
    
    return implode(&#39;&#39;, $strArr);
}
ログイン後にコピー

絵文字式を含む文字列をMySQLに保存します

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

2. PHP Base64 は文字列をエンコードし、データベースから文字列を取得するときにデコードします。

3. 文字列から絵文字表現を直接削除します (この方法は単純で粗雑です)

以上がPHPは文字内の絵文字表現を扱う(判定・削除・保存)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート