如何避免切割字符串的时候切出半个中文字符?

function csubstr($string,$start,$length)
{
$str="";
$len=$start+$length;
for($i=$start;$i<$len;$i++){
if(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$i,2);
$i++;
}
else
$str.=substr($string,$i,1);
}

return $str;
}

看看这个好不好用,别人写的
---------------------------------------------------------------

function substrGB($string,$start,$len)
{
for($i=0;$i<$start+$len;$i++)
{
$tmpstr=(ord($string[$i])>=161 && ord($string[$i])<=247 && ord($string[$i+1])>=161 && ord($string[$i+1])<=254)?$string[$i].$string[++$i]:$tmpstr=$string[$i];
if ($i>=$start&&$i<($start+$len))$tmp .=$tmpstr;
}
return $tmp;
}

---------------------------------------------------------------

//$str 要截取的字符串
//$start 从第$start个字符开始截取,一般取 0
//$len 截取长度
function CsubStr($str,$start,$len)
{
$strlen=strlen($str);
$clen=0;
for($i=0;$i<$strlen;$i++,$clen++)
{
if ($clen>=$start+$len)
{
$tmpstr.="..";
break;
}
if(ord(substr($str,$i,1))>0xa0)
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,2);
$i++;
}
else
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,1);
}
}
return $tmpstr;
}

不好意思,我也是找过来用的。
---------------------------------------------------------------

http://www.dev-club.com/club/bbs/showEssence.asp?id=15340

---------------------------------------------------------------

$vsmystr=ABabySubstr('我是ABabyStudio,请多多指教!',4);
echo($vsmystr.' ');

function ABabySubstr($vsstr_,$vilen_){
$vsreturn='';
$viindex=0;
$vitmp=0;
$vstmp='';
$vicncharaterend=0;
$vscharacter=substr($vsstr_,$viindex,1);
$vsrealcharacter=substr($vsstr_,$viindex,1);
while(strlen($vsrealcharacter)){
$viindex++;
if(ord($vscharacter)<0 ¦ ¦ ord($vscharacter)>127){
if($vicncharaterend==0){
$vicncharaterend=1;
}
else{
$vitmp++;
$vicncharaterend=0;
}
}
else{
$vitmp++;
}
$vstmp=$vstmp.$vscharacter;
if($vitmp==$vilen_){
$vsreturn=$vstmp;
break;
}
if(!strlen(substr($vsstr_,$viindex,1))){
$vsreturn=$vstmp;
break;
}
$vscharacter=substr($vsstr_,$viindex,1);
$vsrealcharacter=substr($vsstr_,$viindex,1);
}
return($vsreturn);
}

Published At
Categories with Web编程
Tagged with
comments powered by Disqus