当前位置:编程学习 > php >>

php 中文字条截取代码

这里提供了一款php 中文字符截取代码哦,包括对中文,asc,utf-8等字符进行截取功能哦。

//中文截取2,单字节截取模式
//如果是request的内容,必须使用这个函数
function cn_substrR($str,$slen,$startdd=0)
{
 $str = cn_substr(stripslashes($str),$slen,$startdd);
 return addslashes($str);
}

//中文截取2,单字节截取模式
function cn_substr($str,$slen,$startdd=0)
{
 global $cfg_soft_lang;
 if($cfg_soft_lang=='utf-8')
 {
  return cn_substr_utf8($str,$slen,$startdd);
 }
 $restr = '';
 $c = '';
 $str_len = strlen($str);
 if($str_len < $startdd+1)
 {
  return '';
 }
 if($str_len < $startdd + $slen || $slen==0)
 {
  $slen = $str_len - $startdd;
 }
 $enddd = $startdd + $slen - 1;
 for($i=0;$i<$str_len;$i++)
 {
  if($startdd==0)
  {
   $restr .= $c;
  }
  else if($i > $startdd)
  {
   $restr .= $c;
  }

  if(ord($str[$i])>0x80)
  {
   if($str_len>$i+1)
   {
    $c = $str[$i].$str[$i+1];
   }
   $i++;
  }
  else
  {
   $c = $str[$i];
  }

  if($i >= $enddd)
  {
   if(strlen($restr)+strlen($c)>$slen)
   {
    break;
   }
   else
   {
    $restr .= $c;
    break;
   }
  }
 }
 return $restr;
}

//utf-8中文截取,单字节截取模式
function cn_substr_utf8($str, $length, $start=0)
{
 if(strlen($str) < $start+1)
 {
  return '';
 }
 preg_match_all("/./su", $str, $ar);
 $str = '';
 $tstr = '';

 //为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取
 for($i=0; isset($ar[0][$i]); $i++)
 {
  if(strlen($tstr) < $start)
  {
   $tstr .= $ar[0][$i];
  }
  else
  {
   if(strlen($str) < $length + strlen($ar[0][$i]) )
   {
    $str .= $ar[0][$i];
   }
   else
   {
    break;
   }
  }
 }
 return $str;
}

补充:Php教程,Php入门 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,