//**************************************************
//函数名:csubstr
//作 用:截字符串,汉字一个算两个字符,英文算一个字符
//针对GBK(GB2312)编码的网站
//参 数:$str ----原字符串
// $start ----开始长度
// $len ----截取长度
//返回值:截取后的字符串
//整理人:itlearner
//**************************************************
function csubstr($str, $start, $len)
{
if ($len >= strlen($str)) return $str;
$tmpstr = "";
$len= ($len < strlen($str)) ? $len : strlen($str);
for ($i= $start; $i < $len; $i ++)
{
if (ord(substr($str, $i, 1)) > 0xa0)
{
$tmpstr .= substr($str, $i, 2);
$i ++;
} else
{
$tmpstr .= substr($str, $i, 1);
}
}
$tmpstr .= "...";
return $tmpstr;
}
Popularity: 35%
4 Responses to “csubstr-截取中文字符”
感谢
$len 如果小于 $start 就有问题了(–去不到字符了) ,所以$len 应该是结束的位置,不是字符长度,确切地应该称为 $end 。
或者
将函数for ($i= $start; $i < $len; $i ++)中的 $len 改为(($start+$len)>=strlen($str)? strlen($str):($start+$len)) 即可。
// $len —-截取长度 。 错了 , 应该是 结束位置。
确实有问题。