91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php怎么截取utf8或gbk編碼的中英文字符串

發布時間:2021-09-10 17:53:50 來源:億速云 閱讀:128 作者:chen 欄目:開發技術

這篇文章主要介紹“php怎么截取utf8或gbk編碼的中英文字符串”,在日常操作中,相信很多人在php怎么截取utf8或gbk編碼的中英文字符串問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”php怎么截取utf8或gbk編碼的中英文字符串”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

微博的發言有字數限制,其計數方式是,中文算2個,英文算1個,全角字符算2個,半角字符算1個。
php中自帶strlen是返回的字節數,對于utf8編碼的中文返回時3個,不滿足需求。
mb_strlen 可以根據字符集計算長度,比如utf8的中文計數為1,但這不符合微博字數限制需求,中文必須計算為2才可以。
google了下,找到一個discuz中截取各種編碼字符的類,改造了下,已經測試通過.其中參數$charset 只支持gbk與utf-8。

復制代碼 代碼如下:

$a = "s@@你好";
var_dump(strlen_weibo($a,'utf-8'));

結果輸出為8,其中字母s計數為1,全角@計數為2,半角@計數為1,兩個中文計數為4。源碼如下:

復制代碼 代碼如下:

function strlen_weibo($string, $charset='utf-8')
{
    $n = $count = 0;
    $length = strlen($string);
    if (strtolower($charset) == 'utf-8')
    {
        while ($n < $length)
        {
            $currentByte = ord($string[$n]);
            if ($currentByte == 9 ||
                $currentByte == 10 ||
                (32 <= $currentByte && $currentByte <= 126))
            {
                $n++;
                $count++;
            } elseif (194 <= $currentByte && $currentByte <= 223)
            {
                $n += 2;
                $count += 2;
            } elseif (224 <= $currentByte && $currentByte <= 239)
            {
                $n += 3;
                $count += 2;
            } elseif (240 <= $currentByte && $currentByte <= 247)
            {
                $n += 4;
                $count += 2;
            } elseif (248 <= $currentByte && $currentByte <= 251)
            {
                $n += 5;
                $count += 2;
            } elseif ($currentByte == 252 || $currentByte == 253)
            {
                $n += 6;
                $count += 2;
            } else
            {
                $n++;
                $count++;
            }
            if ($count >= $length)
            {
                break;
            }
        }
        return $count;
    } else
    {
        for ($i = 0; $i < $length; $i++)
        {
            if (ord($string[$i]) > 127)
            {
                $i++;
                $count++;
            }
            $count++;
        }
        return $count;
    }
}

到此,關于“php怎么截取utf8或gbk編碼的中英文字符串”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

定安县| 信宜市| 营山县| 兰考县| 庆安县| 舟曲县| 乐东| 晴隆县| 玉树县| 纳雍县| 唐河县| 同德县| 松潘县| 东明县| 高邑县| 泽州县| 蒙阴县| 加查县| 吴桥县| 合江县| 丰台区| 兴化市| 枣阳市| 南召县| 汉源县| 东兰县| 和平县| 宁陕县| 防城港市| 新乐市| 铜山县| 江都市| 临清市| 正蓝旗| 福海县| 腾冲县| 巢湖市| 玛沁县| 海伦市| 阿勒泰市| 揭阳市|