- 论坛徽章:
- 0
|
贴一个我自己写的,功能跟lz要求的有点小小的差别
function cutoff($str,$num,$extra='...')
{
if (function_exists('mb_strlen'))
{
if (mb_strlen($str,'utf-8')>$num)
{
return mb_substr($str,0,$num,'utf-8').$extra;
}
else
return $str;
}
else
{
$loop=0;
for ($i=0;$i<strlen($str);$i++)
{
$loop++;
if ($loop>$num)
return substr($str,0,$i).$extra;
if ( between(ord(substr($str,$i,1)),192,223) && between(ord(substr($str,$i,1)),128,191) )
$i++;
elseif ( between(ord(substr($str,$i,1)),224,239) && between(ord(substr($str,$i+1,1)),128,191) && between(ord(substr($str,$i+2,1)),128,191))
$i+=2;
}
return $str;
}
}
function between($num,$mix,$max)
{
return ($num>=$mix && $num<=$max)?true:false;
} |
|
|