微博140个字数计算问题

微博的字数为140个,但是算法不是1个字算一个。如果为英文则2个算一个,中文为1个算1个。不足1个的按1个算。。

 

下面以UTF-8编码为例说说如何统计微博字数:

javascript中的length不论中文英文都是1个字节,处理方法是判断中英文来自定义为英文1个长度中文2个长度,再做除2处理。

 

function textareastrlen(str)
{
    var len;
    var i;
    len = 0;
    for (i=0;i<str.length;i++)
    {
        if (str.charCodeAt(i)>255)
        {
            len+=2;
        }
        else
        {
            len++;
        }
    }
    if (len%2 !=0)
    {
        len = len+1;
    }
    return len/2;
}

 

PHP中strlen按一个英文1个字节,一个中文3个字节,mb_strlen不论中文英文都是1个字节,

先得到一个英文个1个字节,一个中文算2个字节

function StrLenW2($str){
    return (strlen($str)+mb_strlen($str,'UTF8'))/2;
}

对结果进行除2处理

function textareaLen($str) {
    $len = StrLenW2($str);
    if ($len%2!=0) {
        $len = $len+1;
    }
    return $len/2;
}

 

Tags: mb_strlen , 微博 , strlen

上一篇: 解决json_encode中文UNICODE转码问题   下一篇: mysql如何计算最近七天

提交疑问

回顶部