由于一个中文相当于两个字符,所以使用substr($str,$start,$end)函数截取中文有时会截取到半个中文,结果显示为乱码。代码如下:
/*
$str为目标字符串
$len为截取的长度
*/
public function change_len($str,$len){
return substr($str,0,(int)$len);
}
今天在网上找到一个函数,可以有效地防止半字符问题。代码如下:
/*
$str为目标字符串
$len为截取的长度
*/
function utf_substr($str,$len)
{
$tmpstr = "";
$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;
}
/*
$str为目标字符串
$len为截取的长度
*/
public function change_len($str,$len){
return substr($str,0,(int)$len);
}
今天在网上找到一个函数,可以有效地防止半字符问题。代码如下:
/*
$str为目标字符串
$len为截取的长度
*/
function utf_substr($str,$len)
{
$tmpstr = "";
$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;
}