千家信息网

php怎么截取utf8或gbk编码的中英文字符串

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"php怎么截取utf8或gbk编码的中英文字符串",在日常操作中,相信很多人在php怎么截取utf8或gbk编码的中英文字符串问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
千家信息网最后更新 2026年11月02日php怎么截取utf8或gbk编码的中英文字符串

这篇文章主要介绍"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编码的中英文字符串"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

字符 编码 中文 中英 字符串 代码 学习 半角 字数 更多 需求 全角 帮助 限制 实用 接下来 这不 两个 你好 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司简介 科技金融是不是互联网金融 互联网 科技 互联网 卓越科技 互联网 的科技创新 致聘互联网科技 友谊互联网络科技 字节跳动和互联网科技 互联网科技与管理 南平创想时代互联网科技有限公司 洛阳昕诺飞互联网科技有限公司 爱医互联网络科技 中科明德北京互联网科技 工业互联网展湾科技股份有限公司 中天科技中国工业互联网 江苏互联网智能科技产品出厂价 第三届互联网大会安防黑科技 北京品多多互联网科技有限公司 互联网高科技绘画 现代科技的标志之一的互联网 中资互联网科技 猪兼强互联网科技 互联网高科技企业 创业天下互联网科技有限公司 青岛科技大学互联网大赛研究生 青海科技产业互联网发展 中和天地互联网科技有限公司 雨阳互联网卡科技有限公司 求路客互联网科技电话 互联网企业和网络科技有限公司
0