最新消息:本站所有跳转向bbs.ykit.cn的附件将全面停止,附件已转移到https://www.qingsj.com

php字符截取

PHP 有客 720浏览
//$sourcestr 是要处理的字符串 
 
//$cutlength 为截取的长度(即字数) 
 
function cut_str($sourcestr,$cutlength) 
 
{ 
 
 $returnstr=''; 
 
 $i=0; 
 
 $n=0; 
 
 $str_length=strlen($sourcestr);//字符串的字节数 
 
 while (($n<$cutlength) and ($i<=$str_length)) 
 
 { 
 
 $temp_str=substr($sourcestr,$i,1); 
 
 $ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码 
 
 if ($ascnum>=224) //如果ASCII位高与224, 
 
 { 
 
 $returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符 
 
 $i=$i+3; //实际Byte计为3 
 
 $n++; //字串长度计1 
 
 } 
 
 elseif ($ascnum>=192) //如果ASCII位高与192, 
 
 { 
 
 $returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符 
 
 $i=$i+2; //实际Byte计为2 
 
 $n++; //字串长度计1 
 
 } 
 
 elseif ($ascnum>=65 && $ascnum<=90) //如果是大写字母, 
 
 { 
 
 $returnstr=$returnstr.substr($sourcestr,$i,1); 
 
 $i=$i+1; //实际的Byte数仍计1个 
 
 $n++; //但考虑整体美观,大写字母计成一个高位字符 
 
 } 
 
 else //其他情况下,包括小写字母和半角标点符号, 
 
 { 
 
 $returnstr=$returnstr.substr($sourcestr,$i,1); 
 
 $i=$i+1; //实际的Byte数计1个 
 
 $n=$n+0.5; //小写字母和半角标点等与半个高位字符宽... 
 
 } 
 
 } 
 
 if ($str_length>$cutlength){ 
 
 $returnstr = $returnstr . "...";//超过长度时在尾处加上省略号 
 
 } 
 
 return $returnstr; 
 
}

转载请注明:有客帮 » php字符截取