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; }
以上就是本文的全部内容,希望大家能够喜欢。