1 $cutLength){ //判断参数合法 9 while (($n < $cutLength) and ($i <= $strLength)){ //限定循环范围10 $tempStr = substr($sourceStr, $i, 1); //取出指针下一个字符11 $ascnum = Ord($tempStr); //取出ascll值12 if ($ascnum >= 224){ //判断值的大小13 $returnStr = $returnStr . substr($sourceStr, $i, 3); //弹出取到的汉字到结果中14 $i = $i+3; //指针移动三个字符长度15 $n++; //字数统计+116 }elseif ($ascnum >= 192){ 17 $returnStr=$returnStr.substr($sourceStr,$i,2); //如上18 $i=$i+2;19 $n++;20 }elseif ($ascnum >= 65 && $ascnum <= 90){21 $returnStr = $returnStr.substr($sourceStr, $i, 1); //如上22 $i = $i+1;23 $n++;24 }else{ 25 $returnStr = $returnStr.substr($sourceStr, $i, 1); //这里要说下,如果小于65就是标点字符了,算作0.5个字符26 $i = $i+1;27 $n = $n+0.5;28 }29 }30 if ($strLength > $i){31 $returnStr = $returnStr.$extStr; //如果结果字符串小于长度那么,填上后缀标志32 }33 return $returnStr;34 }35 else36 return $sourceStr; //如果截取长度大于总长,返回原来的字符串37 }38 }39 40 ?>