欢迎光临
我们一直在努力

php中文字符串截取函数

function left($str, $len, $charset="utf-8")
{
 if( !is_numeric($len) or $len < = 0)//如果截取长度小于等于
 {
  return "";      //返回空
 }
 $sLen = strlen($str);    //获取原始字串长度
 if( $len >= $sLen )     //如果截取长度大于总字符串长度
 {
  return $str;     //直接返回当前字符串
 } 
 if ( strtolower($charset) == "utf-8" ) //如果编码为为utf-8
 {
  $len_step = 3;      //则中文字符长度为3
 }
 else         //如果不是
 {
  $len_step = 2;      //如果是gb2312或big5编码,则中文字符长度为2
 }
 //执行截取操作
 $len_i = 0;   //初始化计数当前已截取的字符串个数,此值为字符串的个数值
 $substr_len = 0; //初始化应该要截取的总字节数
 for( $i=0; $i < $sLen; $i++ )  //开始循环
 {
  if ( $len_i >= $len ) break; //总截取$len个字符串后,停止循环
  if( ord(substr($str,$i,1)) > 0xa0 ) //如果是中文字符串
  {
   $i += $len_step - 1;   //
   $substr_len += $len_step;  //当前总字节数加上相应编码的中文字符长度
  }
  else        //如果字符不是中文
  {
   $substr_len ++;     //加1个字节
  }
  $len_i ++;     //已经截取字符串个数增加
 }
 $result_str = substr($str,0,$substr_len ); //获取结果
 return $result_str;    //返回结果
}


 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:枫叶博客 » php中文字符串截取函数

分享到: 生成海报
avatar

热门文章

  • 评论 2

    Captcha Code

    • QQ号
    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址
    1. #1
      avatar

      对字符串和数组操作真是有点麻烦

      悠扬志14年前 (2010-09-09)国内网友回复
      • avatar

        呵呵,特别是中文。很容易出问题

        qyuef14年前 (2010-09-09)国内网友回复

    枫叶博客

    联系我们联系我们

    登录

    忘记密码 ?