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