php源码分析之DZX1.5字符串截断函数cutstr用法
本文实例讲述了php源码分析之DZX1.5字符串截断函数cutstr用法。分享给大家供大家参考。具体分析如下:
<?php
/**
*函数来源DZX1.5,文件所在/source/function/function_core.php
*/
define('CHARSET','UTF-8');
functioncutstr($string,$length,$dot="..."){
if(strlen($string)<=$length){
return$string;
}
if(strtolower(CHARSET)=="utf-8"){
$n=$tn=$noc=0;
while($n<strlen($string)){
$t=ord($string[$n]);
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];
}
}
$pos=strrpos($strcut,chr(1));
if($pos!==false){
$strcut=substr($strcut,0,$pos);
}
return$strcut.$dot;
}
$string='测试数据库ablci102020@(#)!)!测试劳动力ddk';
echocutstr($string,15);
/*Endofphp*/
运行结果如下:
测试数据库ablci1020...
希望本文所述对大家的php程序设计有所帮助。