直接使用php函式substr擷取中文字元可能會出現亂碼,主要是substr可能硬生生的將乙個中文字元「鋸」成兩半。解決辦法:
1、使用mbstring擴充套件庫的mb_substr擷取就不會出現亂碼了。
2、自己書寫擷取函式,但效率不如用mbstring擴充套件庫來得高。
3、如果僅是為了輸出擷取的串,可用如下方式實現:substr($str, 0, 30).chr(0)。
substr()函式可以分割文字,但要分割的文字如果包括中文字元往往會遇到問題,這時可以用mb_substr()/mb_strcut這個函式,mb_substr()/mb_strcut的用法與substr()相似,只是在mb_substr()/mb_strcut最後要加入多乙個引數,以設定字串的編碼,但是一般的伺服器都沒開啟php_mbstring.dll,需要在php.ini在把php_mbstring.dll開啟。
舉個例子:
<?php
echo mb_substr('這樣一來我的字串就不會有亂碼^_^', 0, 7, 'utf-8');
?>
輸出:這樣一來我的字
<?php
echo mb_strcut('這樣一來我的字串就不會有亂碼^_^', 0, 7, 'utf-8');
?>
輸出:這樣一
從上面的例子可以看出,mb_substr是按字來切分字元,而mb_strcut是按位元組來切分字元,但是都不會產生半個字元的現象。
php實現中文字串擷取無亂碼的方法
function gbsubstr($string, $start, $length) else
}return $str.'...';
}else
}
php擷取中文無亂碼
在php中需要對字串進行擷取,如果沒有裝mb擴充套件 mb substr函式 對中文擷取就需要進行相應的處理。下面是對字串 世s界s的功s 夫薩的mn是非得失sdf dsf dsf 達 擷取10個字元,最後的輸出是 世s界s的 編碼均為utf8 ss 世s界s的功s 夫薩的mn是非得失sdf dsf...
中文擷取無亂碼的PHP
str 待擷取的字串 len 擷取的字元個數 chars 已經擷取的字元數 res 儲存的字串 chars 儲存已經擷取的字串個數 offset 擷取的偏移量 length 字串的位元組數 若 len str的字元個數,造成無謂的while迴圈,offset length限定 function ut...
中文擷取無亂碼
實現中文字串擷取無亂碼的方法 肖巖utf 8中文擷取函式 在php中,substr 函式擷取帶有中文字串的話,可能會出現亂碼,這是因為中西文乙個位元組所占有的位元組數不一樣,而substr的長度引數是按照位元組去算的,在gb2312編碼時,乙個中文佔2個位元組,英文為1個位元組,而在utf 8編碼當...