<?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);
}
?>