PHP默认的substr可以截取字符串,但是其本意基于英文字符的,如果汉字,很可能因为汉字的双字节问题截取出乱码来,因此如果是汉字的字符串,可以使用如下函数进行截取:
//判断字符串长度,默认的strlen不区分中英文,下面的函数区分的中英文,能做准确判断
function strlen_utf8 ($str)
{
$i = 0;
$count = 0;
$len = strlen ($str);
while ($i < $len)
{
$chr = ord ($str[$i]);
$count++;
$i++;
if ($i >= $len)
break;
if ($chr & 0x80)
{
$chr <<= 1;
while ($chr & 0x80)
{
$i++;
$chr <<= 1;
}
}
}
return $count;
}
//判断字符串长度,并根据参数进行截取
function func_substr($str,$len){
$res="";
if(strlen_utf8($str)>$len){//如果字符串长度超过$len的长度,则截取并且加…
$res=mb_substr($str,0,$len,'utf-8').'…';
}
else{
$res=$str;
}
return $res;
}
?>
调用示例:
echo func_substr('欢迎使用字符串截取函数',6);
?>
阅读(1274) | 评论(0) | 转发(0) |