PHP计算字符串长度,中文长度为2,英文为1

  PHP计算字符串长度,ASCII字符(英文、数字、字母等)长度算1,非ASCII字符(汉字等多字节字符)长度算2:
方法一:
  将非ascii字符替换成两个星号,再使用strlen计算长度:
<?php
function abslength( $str ) {
  return strlen(preg_replace("#[^\x{00}-\x{ff}]#u", '**', $str));
}
echo abslength("爱E族: aiezu.com"); //输出16

方法二:
  循环判断每个字符是否为ASCII字符,是则加1,否则加2:
<?php
function abslength($s){
    $n = 0;
    preg_match_all("/./us",$s,$matchs);
    foreach($matchs[0] as $p){
        $n += preg_match('#^['.chr(0x1).'-'.chr(0xff).']$#',$p) ? 1 : 2;
    }
    return $n;
}
echo abslength("爱E族: aiezu.com"); //16
 
  这是PHP版本,要使用JS按同样规则计算字符串长度,请参考:Javascript计算字符串长度,中文长度为2,英文为1

0 个评论

要回复文章请先登录注册