php计算中文字符串的长度

直接上代码,原理见末尾原文链接:


<?php
function mbstrlen($str,$encoding="utf8")
{

    if (($len = strlen($str)) == 0) {
        return 0;
    }

    $encoding = strtolower($encoding);

    if ($encoding == "utf8" or $encoding == "utf-8") {
        $step = 3;
    } elseif ($encoding == "gbk" or $encoding == "gb2312") {
        $step = 2;
    } else {
        return false;
    }

    $count = 0;
    for ($i=0; $i<$len; $i++) {
        $count++;
        //如果字节码大于127,则根据编码跳几个字节
        if (ord($str{$i}) >= 0x80) {
            $i = $i + $step - 1;//之所以减去1,因为for循环本身还要$i++
        }
    }
    return $count;
}

echo mbstrlen(iconv("utf-8","gbk","你是我的小苹果"),"gbk");
echo mbstrlen("你是我的小苹果");

原文链接:PHP计算中文字符串的字数,自己实现mb_strlen

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。