截取中文字串函数function cn_substr($str,$len, $start=0)
{
$restr="";
$c="";
$str_len=strlen($str);
if($str_len<$start+1) //如果字符串长度小于等于要截取的开始位置的长度
{
return "";
}
if($str_len<$start+$len||$len==0)
{
$len=$str_len-$start;
}
$end=$start+$len-1;
for($i=0;$i<$str_len;$i++)
{
if(ord($str[$i])>0x80)//判断是否为汉字
{
if($str_len>$i+1)
{
$c=$str[$i].$str[$i+1];
}
$i++;
}
else
{
$c=$str[$i];
}
if($i>$end) //如果超过要截取的字符则推出
{
if((strlen($restr)+strlen($c))>$len)
{
break;
}else
{
$restr.=$c;
break;
}
}
//截取
if($start==0 || $i>$start)
{
$restr.=$c;
}
} if(strlen($restr) < strlen($str)) $restr .= "<i>...</i>";
return $restr;
}
{
$restr="";
$c="";
$str_len=strlen($str);
if($str_len<$start+1) //如果字符串长度小于等于要截取的开始位置的长度
{
return "";
}
if($str_len<$start+$len||$len==0)
{
$len=$str_len-$start;
}
$end=$start+$len-1;
for($i=0;$i<$str_len;$i++)
{
if(ord($str[$i])>0x80)//判断是否为汉字
{
if($str_len>$i+1)
{
$c=$str[$i].$str[$i+1];
}
$i++;
}
else
{
$c=$str[$i];
}
if($i>$end) //如果超过要截取的字符则推出
{
if((strlen($restr)+strlen($c))>$len)
{
break;
}else
{
$restr.=$c;
break;
}
}
//截取
if($start==0 || $i>$start)
{
$restr.=$c;
}
} if(strlen($restr) < strlen($str)) $restr .= "<i>...</i>";
return $restr;
}
if ($charset == '') {
global $charset;
empty($charset) && $charset = 'utf8';
}
$charjump = $charset == 'utf8' ? 2 : 1;
$slen = strlen($str);
$strwidth = 0;
for ($i=0; $i<$slen; $i++) {
if (ord($str[$i]) > 128) {
$strwidth += 2;
$i += $charjump;
if ($strwidth >= $width) {
break;
}
continue;
} else {
$strwidth += 1;
if ($strwidth >= $width) {
break;
}
}
}
return substr($str, 0, ++$i).$dot;
}
后面那个 encoding 你的页面是什么编码就写什么编码。
毕竟是在做网页啊
echo mb_substr('xinshou_2008',0,3,'UTF-8'). '...';你好啊...
xin...在网页中要多难看,就有多难看