1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
//截斷中文字並且避免結尾亂碼,但是就有可能會少一個字, 無解 function utf8_substr($StrInput,$strStart,$strLen){ //對字串做URL Eecode $StrInput = mb_substr($StrInput,$strStart,mb_strlen($StrInput)); $iString = urlencode($StrInput); $lstrResult=""; $istrLen = 0; $k = 0; do{ $lstrChar = substr($iString, $k, 1); if($lstrChar == "%"){ $ThisChr = hexdec(substr($iString, $k+1, 2)); if($ThisChr >= 128){ if($istrLen+3 < $strLen){ $lstrResult .= urldecode(substr($iString, $k, 9)); $k = $k + 9; $istrLen+=3; }else{ $k = $k + 9; $istrLen+=3; } }else{ $lstrResult .= urldecode(substr($iString, $k, 3)); $k = $k + 3; $istrLen+=2; } }else{ $lstrResult .= urldecode(substr($iString, $k, 1)); $k = $k + 1; $istrLen++; } }while ($k < strlen($iString) && $istrLen < $strLen); return $lstrResult; } |
自已寫的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function cut_string($str, $_length){ $count = 0; $length = mb_strlen($str, 'utf-8'); $new_str = ''; for($i = 0; $i < $length; $i++){ $char = mb_substr($str, $i, 1, 'utf-8'); $b_length = strlen($char); if($b_length > 1){ $count += 2; }else{ $count ++; } if($count <= $_length){ $new_str .= $char; } } return $new_str; } |