我们下面就来介绍一下如何通过PHP自定义函数来截取我们想要截取的字符长度,超出部分用省略号代替或者隐藏。
字符串截取方法://截取字符串长度
functioncut($Str,$Length,$more=true){
//$Str为截取字符串,$Length为需要截取的长度
global$s;
$i=0;
$l=0;
$ll=strlen($Str);
$s=$Str;
$f=true;
while($i<=$ll){
if(ord($Str{$i})
$l++;$i++;
}elseif(ord($Str{$i})
$l++;$i+=2;
}elseif(ord($Str{$i})
$l+=2;$i+=3;
}elseif(ord($Str{$i})
$l+=1;$i+=4;
}elseif(ord($Str{$i})
$l+=1;$i+=5;
}elseif(ord($Str{$i})
$l+=1;$i+=6;
}
if(($l>=$Length-1)&&$f){
$s=substr($Str,0,$i);
$f=false;
}
if(($l>$Length)&&($i
$s=$s.'...';
break;
//如果进行了截取,字符串末尾加省略符号“...”
}
}
return$s;
}
使用方法:$str='看看截取到哪里?';
echocut($str,1);
echo'
';
echocut($str,4);
echo'
';
echocut($str,5);
echo'
';
echocut($str,5,false);
echo'
';
$str='中英文混合看看hello?';
echocut($str,18);
echo'
';
echocut($str,50);
输出:看...
看看...
看看...
看看
中英文混合看看hel...
中英文混合看看hello?
解释:一般UTF-8格式为3个字节,而GBK兼容gb2312一般都是2个字节,以上以UTF-8编码为实例。
通过第三个参数$more可以开关省略号模式,默认为true为带省略号,false为没有省略号。