PHP UTF 擷取字串亂碼問題

2021-08-29 16:42:35 字數 584 閱讀 3067

php(utf)擷取字串亂碼問題

使用php[substr()]函式擷取字串末位會出現亂碼,因為中文utf-8編碼,每個漢字佔3位元組,而gb2312佔2位元組,英文佔1位元組,擷取位不準確,造成斷開的字元會把其後的..拉過來一起做乙個字,解決方法:

function cut_str($string, $sublen, $start = 0, $code = 'utf-8')

else

if(ord(substr($string, $i, 1))>129) $i++;

}if(strlen($tmpstr)<$strlen ) $tmpstr.= "..";

return $tmpstr;}}

function msubstr($str, $start, $len) else

$tmpstr .= substr($str, $i, 1);

}return $tmpstr;

}例子:

$sql = "夸父a到此bc一遊!";

echo cut_str($sql, 4);

預設為:utf-8編碼,起始為 0 ,apache 2 + php5環境 測試通過 ..

php擷取字串,出現亂碼

在資料庫中得到的字段太長了,不好直接在頁面顯示,所以我使用了一些擷取字串的方法。一在php manual中找到了substr方法,開始還挺驚喜。發現擷取中文的時候在字串的末尾出現亂碼。我用這個 方法擷取的是gb2312的中文字串,比如,我的字串 發現擷取中文的 substr 發現擷取中文的 0,4 ...

php擷取字串,避免亂碼

1.擷取gb2312中文字串 擷取中文字串 function mysubstr str,start,len else tmpstr substr str,i,1 return tmpstr 2.擷取utf8編碼的多位元組字串 擷取utf8字串 function utf8substr str,from...

擷取字串

static function blogsummary str,len 100 else out valtmp break tmp tmpstr outlen mb strlen valtmp,charset out val.rs 2 key right rs 2 key unset rs tags...