<?php
//第一种方法:
//截字符串长度
function substr_cut($str_cut,$length)

    if (strlen($str_cut) > $length)
    { 
        for($i=0; $i < $length; $i++) 
        if (ord($str_cut[$i]) > 128)    $i++; 
        $str_cut = substr($str_cut,0,$i); 
    } 
    return $str_cut; 
}
//第二种方法:
function msubstr($str,$start,$len)//截字符串长度

$strlen=strlen($str); 
for($i=0;$i<$strlen;$i++) 

if($i>=$start&&$i<($start+$len)) 

if(ord(substr($str,$i,1))>0xa1) 
$tmpstr.=substr($str,$i,2); 
else 
$tmpstr.=substr($str,$i,1); 
}
if(ord(substr($str,$i,1))>0xa1) 
$i++;

return $tmpstr; 
}
//第三种方法:
function str_cut($str_cut,$length){
    if(strlen($str_cut) > $length){   //处理标题,太长用……表示
       for($i=0; $i < $length; $i++){
           if (ord($str_cut[$i]) > 128) $i++; 
       }
       $str_cut = substr($str_cut,0,$i); 
   }
   return $str_cut;
}
//第四种方法:
function cutstr($str,$cutleng)
{
$str = $str; //要截取的字符串
$cutleng = $cutleng; //要截取的长度
$strleng = strlen($str); //字符串长度
if($cutleng>$strleng)return false;//截取的长度要小于等于字符串长度
$notchinanum = 0; //初始不是汉字的字符数
for($i=0;$i<$cutleng;$i++)
{
if(ord(substr($str,$i,1))<=128)
{
$notchinanum++;
}
}
if(($cutleng%2==1)&&($notchinanum%2==0))//如果要截取奇数个字符,所要截取长度范围内的字符必须含奇数个非汉字,否则截取的长度加一
{
$cutleng++;
}
if(($cutleng%2==0)&&($notchinanum%2==1))//如果要截取偶数个字符,所要截取长度范围内的字符必须含偶数个非汉字,否则截取的长度加一
{
$cutleng++;
}
return substr($str,0,$cutleng);
}
?>