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

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

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

    1. <?php
    2. $str=中文a字1符;
    3. echo strlen($str);
    4. echo <br />;
    5. echo mb_strlen($str,UTF8);
    6. //输出结果
    7. //14
    8. //6
    9. ?>

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

  • 关于中英文混排串的占位符计算:
    利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1),计算的方法是:如果一个混排字符串有a个中文,b个英文,占位是:

    1. <?php
    2. $str=中文a字1符;
    3. //计算如下
    4. echo (strlen($str) + mb_strlen($str,UTF8)) / 2;
    5. echo
    6. //输出结果
    7. //10
    8. ?>

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

posted on 2009-07-02 14:26 bestmost 阅读(547) 评论(0)  编辑 收藏 引用 网摘 所属分类: php模块和类库


只有注册用户登录后才能发表评论, 未注册用户请先注册

网站导航:
<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

公告

留言簿(6)

随笔分类(322)

all

搜索

积分与排名

最新评论

阅读排行榜

千百亿工作室
BT促销网