计算 UTF-8 字符串长度(忽略字节的方案)

本文提供了一种计算UTF-8字符串长度的方法,通过忽略字节而只计数字符数量,类似于JavaScript中的length属性。使用PHP实现,适用于需要快速获取字符串字符数而非字节数的应用场景。

本文介绍的函数可以统计 UTF-8 字符串的长度,但不同的是,该函数并不考虑字节,这有些类似 Javascript 中字符串的 length 方法,一个字符全部按 1 个长度计算。


PHP:

 1  <? php 
 2  //  说明:计算 UTF-8 字符串长度(忽略字节的方案) 
 3  // 整理:http://www.CodeBit.cn 
 4   
 5  function  strlen_utf8( $str
 6 
 7       $i   =   0
 8       $count   =   0
 9       $len   =   strlen  ( $str ); 
10       while  ( $i   <   $len
11      { 
12           $chr   =   ord  ( $str [ $i ]); 
13           $count ++
14           $i ++
15           if ( $i   >=   $len
16               break
17   
18           if ( $chr   &   0x80
19          { 
20               $chr   <<=   1
21               while  ( $chr   &   0x80
22              { 
23                   $i ++
24                   $chr   <<=   1
25              } 
26          } 
27      } 
28       return   $count
29  }  
30   
31  $str   =   " Codebit.cn - 聚合小段精华代码 "
32   
33  echo  strlen_utf8( $str ); 
34   
35  ?>


上面的代码将返回 21。

posted on 2009-05-12 16:42  实验室 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/labs/archive/2009/05/12/1455047.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值