php內建的substr()函式不能對中文字元進行很好的截斷處理,對於一些中英文混合的字元會出現亂碼的情況。下面提供兩種解決函式。
1、gb2312編碼方式的截斷
php**
function msubstr($str, $start, $len) else
$tmpstr .= substr($str, $i, 1);
} return
$tmpstr . "...";
}
2、utf8格式下的中文字元截斷
utf-8編碼的字元可能由1~3個位元組組成, 具體數目可以由第乙個位元組判斷出來。(理論上可能更長,但這裡假設不超過3個位元組)
第乙個位元組大於224的,它與它之後的2個位元組一起組成乙個utf-8字元
第乙個位元組大於192小於224的,它與它之後的1個位元組組成乙個utf-8字元
否則第乙個位元組本身就是乙個英文本元(包括數字和一小部分標點符號)。
php**
//$sourcestr 是要處理的字串
//$cutlength 為擷取的長度(即字數)
function cut_str($sourcestr,$cutlength)
elseif ($ascnum>=192) //如果ascii位高與192,
elseif ($ascnum>=65 && $ascnum
<=90) //如果是大寫字母,
else
//其他情況下,包括小寫字母和半形標點符號,
} if ($str_length>$cutlength)
return
$returnstr;
}
PHP實現中文字元的無亂碼截斷
php 內建的substr 函式不能對中文字元進行很好的截斷處理,對於一些中英文混合的字元會出現亂碼的情況。下面提供兩種解決函式。1 gb2312編碼方式的截斷 functionmsubstr str,start,len else return tmpstr.2 utf8格式下的中文字元截斷 utf...
PHP實現中文字串擷取無亂碼
ascii碼 乙個中文漢字佔兩個位元組的空間。utf 8編碼 乙個中文 含繁體 等於三個位元組。unicode編碼 乙個中文 含繁體 等於兩個位元組。我們寫頁面基本都是utf 8編碼 echo substr php中文網 0,5 substr 返回字串子串 substr 第乙個引數是要擷取的字串,第...
限定字元長度,截斷中文字元
今日遇到個麻煩事。input限定輸入位元組數是8,中文自然算兩個位元組。本來一路順利,keyup keydown keypress事件挨個試過去,把中文用正則替換成兩個英文本元,超過8的就return false。ie下表現超級完美。這個時侯firefox下麻煩事就開始了,ie下,中文輸入法狀態下他...