PHP實現中文字元的無亂碼截斷

2021-06-28 07:53:52 字數 1399 閱讀 7488

php

內建的substr()函式不能對中文字元進行很好的截斷處理,對於一些中英文混合的字元會出現亂碼的情況。下面提供兩種解決函式。

1、gb2312編碼方式的截斷

functionmsubstr($str,$start,$len)else

}

return$tmpstr."...";

}2

、utf8格式下的中文字元截斷

utf-8

編碼的字元可能由1~3個位元組組成,具體數目可以由第乙個位元組判斷出來。(理論上可能更長,但這裡假設不超過3個位元組)

第乙個位元組大於224的,它與它之後的2個位元組一起組成乙個utf-8字元

第乙個位元組大於192小於224的,它與它之後的1個位元組組成乙個utf-8字元

否則第乙個位元組本身就是乙個英文本元(包括數字和一小部分標點符號)。

//$sourcestr 是要處理的字串

//$cutlength 為擷取的長度(即字數)

functioncut_str($sourcestr,$cutlength)elseif($ascnum>=192)elseif($ascnum>=65 &&$ascnum<=90)else

}

if($str_length>$cutlength)

return$returnstr;

}

PHP實現中文字元的無亂碼截斷

php內建的substr 函式不能對中文字元進行很好的截斷處理,對於一些中英文混合的字元會出現亂碼的情況。下面提供兩種解決函式。1 gb2312編碼方式的截斷 php function msubstr str,start,len else tmpstr substr str,i,1 return t...

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下,中文輸入法狀態下他...