/ mb_string

PHP截取定长字符串(UTF8)

首先解释下这里的“定长”的意思,就是在WEB页面显示的宽度,同样一个字符,汉字占的宽度大概是英文字母的两倍。

假设“leo108”占了6个宽度单元,那么“leo108的博客”就占了12个宽度单元。

我希望实现的效果就是截取一定宽度单元的字符,但又不能乱码,所以就写了一个函数,需要mb_string支持

function shortname($name,$maxlength){ $len = strlen($name); $i = 0; $j = 0; $k = 0; while($i<$maxlength && $j<$len){ $temp = mb_substr($name,$k,1,'utf8'); if(strlen($temp) == 1){ $i += 1; }else{ $i += 2; } $j += strlen($temp); $k++; } if($j<$len){ return substr($name,0,$j)."..."; } return substr($name,0,$j); }

实现效果如下:

echo shortname('leo108这名字都有人抢',12); //leo108这名字... echo shortname("leo108's blog",12); //leo108's blo...

PHP截取定长字符串(UTF8)
Share this