这是俺参考网上的介绍写出来的,一直在用还没发现什么问题,楼主试试,如果有问题记得给我留言,谢谢。
function substring($string,$num){//截取汉字字符串并且加上省略号
$string=str_replace(" "," ",$string);
if(strlen($string)<=$num) {
$str=$string;
}else{
$str=mysubstring($string,$num-2)."…";
}
$str=str_replace(" "," ",$str);
return $str;
}
function mysubstring($string,$num)//截取汉字字符串
{
if ($num>strlen($string)) $num=strlen($string);
$j=0;
for($i=0;$i<$num;$i++)
{
if(ord(substr($string,$i,1))>0xa0){
$j++;
if ($i<($num-1)){
$i++;
$j++;
}
}
}
if($j%2!=0) $num++;
$str=substr($string,0,$num);
return $str;
}
function substring($string,$num){//截取汉字字符串并且加上省略号
$string=str_replace(" "," ",$string);
if(strlen($string)<=$num) {
$str=$string;
}else{
$str=mysubstring($string,$num-2)."…";
}
$str=str_replace(" "," ",$str);
return $str;
}
function mysubstring($string,$num)//截取汉字字符串
{
if ($num>strlen($string)) $num=strlen($string);
$j=0;
for($i=0;$i<$num;$i++)
{
if(ord(substr($string,$i,1))>0xa0){
$j++;
if ($i<($num-1)){
$i++;
$j++;
}
}
}
if($j%2!=0) $num++;
$str=substr($string,0,$num);
return $str;
}
但是你的这个函数在UTF-8编码下,一样的存在这种问题。
谢谢!
没有详细的去看PHP各种扩展的详细资料,真是太笨,恶补一下mb_strimwidth($str, 0, 10, "...");//可以很好的解决我出现的问题