如果直接使用substr截取中文字串肯定會出亂碼的,因為他會把一個漢字分成一半,為什麼會這樣,因為機器內部編碼的問題,現在我們來看處理辦法
1、使用mbstring擴充庫的mb_substr截取就不會出現亂碼了。
2、自己書寫截取函數,但效率不如用mbstring擴充函式庫來得高。
3、如果僅是為了輸出截取的串,可用如下方式實現:substr($str, 0, 30).chr(0).
PHP實例代碼如下:
*
字可以避免亂碼字可以避免亂碼
* 參數 $str 為字串,$start 為開始字元,$len 結束字元
* 返回截取後的字元
*/
function
*/
function
( = "";//開源程式碼phpfensi.com $strlen = $start + $len; for($i = 0; $ str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i,$tmpstr .= substr($str, $ i, 1);
}
return $tmpstr;
}
方法二,php {
if(strlen($string)>$length){
$str=null;
$len=$start+$length; ){
if(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$i++2); }else{
$str.=substr($string,$i,1);
}
}
return $string; }} ?>