php截取字符串函数分享
经常看到有新手问PHP有没有类似asp的left函数或right函数,实现截取某字符串左边或右边开始N个字符的函数。答案当然是有的。PHP中的substr函数就可以做的到,只不过PHP把二个函数合二为一了,这里再给大家分享一个更加优秀的截取字符串的函数。
/**
*方法库-截取字符串-【该函数作者未知】
*@paramstring $string字符串
*@paramint $length字符长度
*@paramstring $dot 截取后是否添加...
*@paramstring $charset编码
*@returnstring
*/
publicfunctioncutstr($string,$length,$dot='...',$charset='utf-8'){
if(strlen($string)<=$length){
return$string;
}
$string=str_replace(array('&','"','<','>'),array('&','"','<','>'),$string);
$strcut='';
if(strtolower($charset)=='utf-8'){
$n=$tn=$noc=0;
while($n<strlen($string)){
$t=ord($string[$n]); //ASCIIֵ
if($t==9||$t==10||(32<=$t&&$t<=126)){
$tn=1;$n++;$noc++;
}elseif(194<=$t&&$t<=223){
$tn=2;$n+=2;$noc+=2;
}elseif(224<=$t&&$t<239){
$tn=3;$n+=3;$noc+=2;
}elseif(240<=$t&&$t<=247){
$tn=4;$n+=4;$noc+=2;
}elseif(248<=$t&&$t<=251){
$tn=5;$n+=5;$noc+=2;
}elseif($t==252||$t==253){
$tn=6;$n+=6;$noc+=2;
}else{
$n++;
}
if($noc>=$length){
break;
}
}
if($noc>$length){
$n-=$tn;
}
$strcut=substr($string,0,$n);
}else{
for($i=0;$i<$length;$i++){
$strcut.=ord($string[$i])>127?$string[$i].$string[++$i]:$string[$i];
}
}
$strcut=str_replace(array('&','"','<','>'),array('&','"','<','>'),$strcut);
return$strcut.$dot;
}
以上就是本文的全部内容,希望大家能够喜欢。