原帖由 wobushiwo 于 2005-11-17 01:18 发表
当一位的编码的范围超过某一范围就并字节处理撒
可以去参考unicode的utf-8,16,32如何定义撒
原帖由 swingcoder 于 2005-11-17 14:08 发表
难道没有人用过mbstring,可惜了一个好东东。
function cutoff($str,$num,$extra='...') { if (function_exists('mb_strlen')) { if (mb_strlen($str,'utf-8')>$num) { return mb_substr($str,0,$num,'utf-8').$extra; } else return $str; } else { $loop=0; for ($i=0;$i<strlen($str);$i++) { $loop++; if ($loop>$num) return substr($str,0,$i).$extra; if ( between(ord(substr($str,$i,1)),192,223) && between(ord(substr($str,$i,1)),128,191) ) $i++; elseif ( between(ord(substr($str,$i,1)),224,239) && between(ord(substr($str,$i+1,1)),128,191) && between(ord(substr($str,$i+2,1)),128,191)) $i+=2; } return $str; } } function between($num,$mix,$max) { return ($num>=$mix && $num<=$max)?true:false; } |
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |