/**
* 截取中文字符串
* @param unknown $str 要截取的字符串
* @param unknown $encode 字符编码
* @param unknown $start 开始位置
* @param string $len 要截取的长度
* @return string
*/
function getStr($str,$encode,$start,$len=null)
{
switch ($encode)
{
case ‘utf8‘:$num = 3;break;
case ‘gbk‘:$num = 2;break;
case ‘gb2312‘:$num = 2;break;
default:
echo ‘编码格式出错‘;exit;
}
$m=0;//开始截取位置
for($a=0;$a<$start;$a++)
{
if(ord(substr($str, $m,1))>0xa0)//0xa0中文开始的值
{
$m+=$num;
}else
{
$m++;
}
}
$length = strlen($str);
$n=1;//截取次数(截取多长,就截取几次)
for ($i=$m;$i<$length;)
{
if(ord(substr($str, $i,1))>0xa0)
{
$sstr .= substr($str, $i ,$num);
$i+=$num;
}
else
{
$sstr .= substr($str, $i ,1);
$i++;
}
$n++;
if ($len!==null){
if($n>$len)break;//如果超出长度,跳出循环
}
}
return $sstr;
}
原文:http://www.cnblogs.com/walksnow/p/6011988.html