中文网站一般会选择两种编码:gbk/gb2312或是utf-8。 gbk编码下每个中文字符所占字节为2,例:

$zhStr = ‘您好,中国!’;
echo strlen($zhStr); // 输出:12

UTF-8编码下每个中文字符占3个字节。

$zhStr = ‘您好,中国!’;
echo strlen($zhStr); // 输出:18

那么如何计算这组中文字符串的长度呢?有人可能会说gbk下获取中文字符串长度除以2,utf-8编码下除以3不就行了吗?但是您要考虑字符串并不老实,99%的情况会以中英混合的情况出现。 
这是WordPress中的一段代码,主要思想就是先用正则将字符串分解为个体单元,然后再计算单元的个数即字符串的长度,代码如下(只能处理utf-8编码下的字符串):

$zhStr = ‘您好,中国!’;
$str = ‘Hello,中国!’;
// 计算中文字符串长度
function utf8_strlen($string = null) {
// 将字符串分解为单元
preg_match_all(“/./us”, $string, $match);
// 返回单元个数
return count($match[0]);
}
echo utf8_strlen($zhStr); // 输出:6
echo utf8_strlen($str); // 输出:9

下面我封装了一个函数准确计算中文字符串的长度:

function count_strlen($string = null)
{
$fileType = mb_detect_encoding($string , array('UTF-8','GBK','LATIN1','BIG5')) ; //判断字符串中文编码的类型 $length = iconv_strlen($string,$fileType);//根据字符编码计算字符串长度 return $length;
} $str = "中文45汶";
$len = count_strlen($str);
echo $len; //输出5

最新文章

  1. 利用javascript对字符串加密
  2. IIS发布WCF服务项目之本地
  3. java线程池初步理解
  4. Leetcode 375. Guess Number Higher or Lower II
  5. ASP.NET MVC请求处理管道生命周期的19个关键环节(7-12)
  6. atitit. orm mapping cfg 映射配置(3)-------hbnt one2maney cfg
  7. hdu 5718 Oracle 高精度
  8. EF查看sql的方法
  9. (zzuli)1907 小火山的宝藏收益
  10. JVM 字节码执行实例分析
  11. Static Final用法
  12. Linux系统维护修复模式
  13. 网络解析 get 和post
  14. DataTables warning 错误警告
  15. [置顶] android AIDL 进程间通信
  16. Spark SQL 1.3测试
  17. Mvc_缓存浅谈
  18. combox的基本应用
  19. C语言复制文件的两种简单的方法【从根本解决问题】
  20. 【C#】详解C#事件

热门文章

  1. ylbtech-LanguageSamples-Struct(结构)
  2. Zend Guard Run-time support missing问题的解决
  3. 树莓派,使用opencv调用自带的摄像头
  4. proxmox3.2安装FreeBSD或者FreeNAS注意事项
  5. Golang 图片上绘制文字
  6. 类似 go get –u 的命令行参数实现
  7. HYSBZ 1036 【树链剖分】
  8. 转载cocos2dx的各种动作用法
  9. Zookeeper分布式协调服务
  10. 实验比较python中的range和xrange