當substr遇上中文字產生亂碼問題.

我們在使用substr的時候常常會有個問題,中文字串往往被截斷出現亂碼,這時候就得用個function來解決中文字問題,首先再執行序列前,先放上下面這段於php中:
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;
}

接下來你就可以快樂的用這段function,如下:

utf8_substr($你的字串, 0, -1);