打印

[php] 怎么取得字符串的个数?

strlen取到的是字符个数,而我要取得是字符串字体个数
如果我的是中英文混合的字符串就很麻烦
给你点启发,
utf-8和ansi编码算法不一样,下面是字符串截断函数
复制内容到剪贴板
代码:
function cutStr($string, $length, $dot = ' ...', $charset = 'utf-8')
{
    if(strlen($string) <= $length) return $string;
    $string = str_replace(array('&amp;', '&quot;', '&lt;', '&gt;'), array('&', '"', '<', '>'), $string);
    $strcut = '';
    if(strtolower($charset) == 'utf-8')
    {
        $n = $tn = $noc = 0;
        while($n < strlen($string))
        {
            $t = ord($string[$n]);
            if($t == 9 || $t == 10 || (32 <= $t && $t <= 126))
            {
                $tn = 1; $n++; $noc++;
            }
            elseif(194 <= $t && $t <= 223)
            {
                $tn = 2; $n += 2; $noc += 2;
            }
            elseif(224 <= $t && $t < 239)
            {
                $tn = 3; $n += 3; $noc += 2;
            }
            elseif(240 <= $t && $t <= 247)
            {
                $tn = 4; $n += 4; $noc += 2;
            }
            elseif(248 <= $t && $t <= 251)
            {
                $tn = 5; $n += 5; $noc += 2;
            }
            elseif($t == 252 || $t == 253)
            {
                $tn = 6; $n += 6; $noc += 2;
            }
            else
            {
                $n++;
            }
            if($noc >= $length) break;
        }
        if($noc > $length) $n -= $tn;
        $strcut = substr($string, 0, $n);
    }
    else
    {
        for($i = 0; $i < $length - strlen($dot) - 1; $i++)
        {
            $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
        }
    }
    $strcut = str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $strcut);
    return $strcut.$dot;
}
代码要像美女的裙子,越短越好
你获取的是字符串个数,又不是字节数,直接strlen就行了啊。
绿野仙踪是说一个小女孩子回家的故事。。
ASCII做还是有问题的

[ 本帖最后由 8yong8 于 2008-7-8 19:17 编辑 ]

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
我要实现的是
$a="我i你";
$num =3;//3个字,循环3次,这里难判断
for($i=0;$i<$num;$i++){
echo 一次取一个字;
}
最后得到的结果是
"我"
"i"
"你"

TOP

说白了,就是实现JS的str.length效果

[ 本帖最后由 8yong8 于 2008-7-11 11:29 编辑 ]

TOP

失望居然没人知道
今天无意中看到段代码
知道怎么解决了
mb_substr函数

TOP

呵呵。。。mb那个最好指定一下编码。
我常喜欢独自一人凝望天空,寻找那种纯净,清雅的蓝色-蓝天,我爱蓝色,大自然把这么美好的色彩赐给天空和大海,它们有多幸运.....!!!

TOP