首页 > PHP > PHP截取等长中英文混合UTF8编码字符串

PHP截取等长中英文混合UTF8编码字符串

2009年8月12日
/*utf8编码时截取等长中英文字串*/ //英文标点[.,\"\\?!:_']   
<?   
function substr_utf8($string,$start,$length)   
{       //by aiou   
     $chars = $string;   
     //echo $string[0].$string[1].$string[2];   
     $i=0;   
     do{   
        if (preg_match ("/[0-9a-zA-Z]/", $chars[$i])){//纯英文   
            $m++;   
        }   
    else {$n++;     }//非英文字节,   
        $k = $n/3+$m/2;   
        $l = $n/3+$m;//最终截取长度;$l = $n/3+$m*2?   
        $i++;   
    } while($k < $length);   
     $str1 = mb_substr($string,$start,$l,'utf-8');//保证不会出现乱码   
     return $str1;   
}

原文:http://aiou.javaeye.com/blog/371094

admin PHP

  1. 2009年8月14日13:44 | #1

    我都能做到

  2. 2009年8月19日16:00 | #2

    很厉害哦

  3. gu217
    2010年5月15日13:35 | #3

    “【记者即时播报】青歌赛再爆抽签结果 二炮武警强强对话”
    “瑞图集团“牵手”二炮政治部电视艺术中心共同打造二十六集电视连续剧《战北平》”
    上面两个字符串,截取超过24后就不等长了,第一个字符串的最后一个字”话”怎么也出不来

  1. 本文目前尚无任何 trackbacks 和 pingbacks.