php內建的應該比較快吧....
再說上面那個程式碼只適用 "Big5" .....
還是有其他特殊理由要自己切???
PHP內建? 大大可以提供方法?
樓上我提供的方法 的確只能用在big5 抱歉 沒測試過就放上來
不過我去看了官方網 可以用 substr來做到切割 UTF-8
http://tw.php.net/manual/tw/function.substr.php#53199<?php
// String intercept By Bleakwind
// utf-8:$byte=3 | gb2312:$byte=2 | big5:$byte=2
function bite_str($string, $start, $len, $byte=3)
{
$str = "";
$count = 0;
$str_len = strlen($string);
for ($i=0; $i<$str_len; $i++) {
if (($count+1-$start)>$len) {
$str .= "...";
break;
} elseif ((ord(substr($string,$i,1)) <= 128) && ($count < $start)) {
$count++;
} elseif ((ord(substr($string,$i,1)) > 128) && ($count < $start)) {
$count = $count+2;
$i = $i+$byte-1;
} elseif ((ord(substr($string,$i,1)) <= 128) && ($count >= $start)) {
$str .= substr($string,$i,1);
$count++;
} elseif ((ord(substr($string,$i,1)) > 128) && ($count >= $start)) {
$str .= substr($string,$i,$byte);
$count = $count+2;
$i = $i+$byte-1;
}
}
return $str;
}
不過 如果使用 mb_substr 會更快
$string = '這是測試用';
$string = mb_substr($string, 0, 3, 'UTF-8');
echo $string; // 會輸出 '這是測'
如果big5 就把 UTF-8 改成 big-5