博采众长,精于一技。Live for love, work for dream.
2009-12-28程序设计

strlen、mb_strlen计算中英文混排字符串长度

在php中常见的计算字符串长度的函数有:strlen和mb_strlen,下面是对这两个函数的比较说明(编码方式UTF8)

比较strlen和mb_strlen
当字符全是英文字符的时候,两者是一样。这里主要比较一下,中英文混排的时候,两个计算结果。(测试时编码方式是UTF8)

$str='中文a字1符';
echo strlen($str);
echo '';
echo mb_strlen($str,'UTF-8');
//输出结果
//14
//6

结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6

关于中英文混排串的占位符计算:
利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1),计算的方法是:如果一个混排字符串有a个中文,b个英文,占位是:
$str='中文a字1符';
//计算如下
echo ( strlen($str) + mb_strlen($str,'UTF-8') ) / 2;
//输出结果
//10

例如 “中文a字1符” 的strlen($str)值是14,mb_strlen($str)值是6,则可以计算出“中文a字1符”的占位是10.

日志信息 »

该日志于2009-12-28 02:55由 Rebill 发表在程序设计分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过评论 RSS订阅这个日志的所有评论。

相关日志 »

赞助链接 »

添加新评论 »

返回顶部
无觅相关文章插件,快速提升流量