好得很程序员自学网

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

PHP字符截取函数,兼容各类gbk,utf-8编码 - php函数

PHP字符截取函数,兼容各类gbk,utf-8编码

在PHP中字符截取函数substr只能截取全英文才不会出现乱码如果里面有中文肯定是无法截取的,下面小编来给大家介绍两个兼容各类gbk,utf-8编码字符串截取函数,实例代码如下:

function  CsubStrPro( $str ,  $start ,  $length ,  $charset  =  "utf-8" ,  $suffix  = false)  {       if  (function_exists (  "mb_substr"  ))           return  mb_substr (  $str ,  $start ,  $length ,  $charset  );       $re  [ 'utf-8' ] =  "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/" ;       $re  [ 'gb2312' ] =  "/[x01-x7f]|[xb0-xf7][xa0-xfe]/" ;       $re  [ 'gbk' ] =  "/[x01-x7f]|[x81-xfe][x40-xfe]/" ;       $re  [ 'big5' ] =  "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/" ;      preg_match_all (  $re  [ $charset ],  $str ,  $match  );       $slice  = join (  "" ,  array_slice  (  $match  [0],  $start ,  $length  ) );       if  ( $suffix )           return   $slice  .  "…" ;       return   $slice ;  } 

实例代码二:

function  subString_UTF8( $str ,  $start ,  $lenth )     {          $len  =  strlen ( $str );          $r  =  array ();          $n  = 0;          $m  = 0;          for ( $i  = 0;  $i  <  $len ;  $i ++) {              $x  =  substr ( $str ,  $i , 1);              $a   =  base_convert (ord( $x ), 10, 2);              $a  =  substr ( '00000000' . $a , -8);              if  ( $n  <  $start ){                  if  ( substr ( $a , 0, 1) == 0) {                 } elseif  ( substr ( $a , 0, 3) == 110) {                      $i  += 1;                 } elseif  ( substr ( $a , 0, 4) == 1110) {                      $i  += 2;                 }                  $n ++;             } else {                  if  ( substr ( $a , 0, 1) == 0) {                      $r [ ] =  substr ( $str ,  $i , 1);                 } elseif  ( substr ( $a , 0, 3) == 110) {                      $r [ ] =  substr ( $str ,  $i , 2);                      $i  += 1;                 } elseif  ( substr ( $a , 0, 4) == 1110) {                      $r [ ] =  substr ( $str ,  $i , 3);                      $i  += 2;                 } else {                      $r [ ] =  '' ;                 }                  if  (++ $m  >=  $lenth ){                      break ;                 }             }         }          return   $r ;     }  // End subString_UTF8;   // End String  

由于此函数返回的是一个数组,因此要配合join函数来显示字符串:join('',subString_UTF8($str, $start, $lenth));,在页面显示的时候还可以在此语句后面连一个"..."

查看更多关于PHP字符截取函数,兼容各类gbk,utf-8编码 - php函数的详细内容...

  阅读:49次