好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php支持gb2312,uft-8中英文字符截取函数 - php函数

php支持gb2312,uft-8中英文字符截取函数

<?php  //截取gb2312中文字符串   function  mysubstr( $str ,  $start ,  $len ) {       $tmps 教程tr =  "" ;       $strlen  =  $start  +  $len ;       for ( $i  = 0;  $i  <  $strlen ;  $i ++) {           if (ord( substr ( $str ,  $i , 1)) > 0xa0) {               $tmpstr  .=  substr ( $str ,  $i , 2);               $i ++;          }  else                $tmpstr  .=  substr ( $str ,  $i , 1);      }       return   $tmpstr ;  }  ?>  <?php  //截取utf8字符串   function  utf8substr( $str ,  $from ,  $len )  {       return  preg_replace( '#^(?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,' . $from . '}' .                          '((?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,' . $len . '}).*#s' ,                          '$1' , $str );  }  ?> 

把上面两个例子整合了

/*   utf-8、gb2312都支持的汉字截取函数   cut_str(字符串, 截取长度, 开始长度, 编码);   编码默认为 utf-8   开始长度默认为 0   */     function  cut_str( $string ,  $sublen ,  $start  = 0,  $code  =  'utf-8' )  {       if ( $code  ==  'utf-8' )      {           $pa  =  "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/" ;          preg_match_all( $pa ,  $string ,  $t_string );             if ( count ( $t_string [0]) -  $start  >  $sublen )  return  join( '' ,  array_slice ( $t_string [0],  $start ,  $sublen )). "..." ;           return  join( '' ,  array_slice ( $t_string [0],  $start ,  $sublen ));      }       else       {           $start  =  $start *2;           $sublen  =  $sublen *2;           $strlen  =  strlen ( $string );           $tmpstr  =  '' ;             for ( $i =0;  $i <  $strlen ;  $i ++)          {               if ( $i >= $start  &&  $i < ( $start + $sublen ))              {                   if (ord( substr ( $string ,  $i , 1))>129)                  {                       $tmpstr .=  substr ( $string ,  $i , 2);                  }                   else                   {                       $tmpstr .=  substr ( $string ,  $i , 1);                  }              }               if (ord( substr ( $string ,  $i , 1))>129)  $i ++;          }           if ( strlen ( $tmpstr )<  $strlen  )  $tmpstr .=  "..." ;           return   $tmpstr ;      }  }    $str  =  "abcd需要截取的字符串" ;  echo  cut_str( $str , 8, 0,  'gb2312' );  ?> 


查看更多关于php支持gb2312,uft-8中英文字符截取函数 - php函数的详细内容...

  阅读:45次