好得很程序员自学网

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

php中高性能中文字符串截取函数分享 - php函数

php中高性能中文字符串截取函数分享

这是用了phpwind里面的一个字符串截取函数,他支持gbk,gbk2312,utf-8等多种编码的字符截取,也很好高效的支持中文字符串的处理,代码如下:

function  substrs( $content , $length , $add = 'Y' ){   if  ( strlen ( $content )> $length ) {   if  ( $GLOBALS [ 'db_charset' ]!= 'utf-8' ) {   $retstr  =  '' ;   for  ( $i =0; $i < $length -2; $i ++) {   $retstr  .= ord( $content [ $i ]) > 127 ?  $content [ $i ]. $content [++ $i ] :  $content [ $i ];   }   return   $retstr .( $add == 'Y'  ?  ' ..'  :  '' );   }   return  utf8_trim( substr ( $content ,0, $length )).( $add == 'Y'  ?  ' ..'  :  '' );   }   return   $content ;   }   function  utf8_trim( $str ) {   $hex  =  '' ;   $len  =  strlen ( $str )-1;   for  ( $i = $len ; $i >=0; $i -=1) {   $ch  = ord( $str [ $i ]);   $hex  .=  " $ch" ;   if  (( $ch  & 128)==0 || ( $ch  & 192)==192) {   return   substr ( $str ,0, $i );   }   }   return   $str . $hex ;   }    function  cutstr( $string ,  $length ,  $dot  =  ' ...' ) {   global   $charset ;   if ( strlen ( $string ) <=  $length ) {   return   $string ;   }   $string  =  str_replace ( array ( '&' ,  '"' ,  '<' ,  '>' ),  array ( '&' ,  '"' ,  '<' ,  '>' ),  $string );   $strcut  =  '' ;   if ( strtolower ( $charset ) ==  'utf-8' ) {   $n  =  $tn  =  $noc  = 0;   while ( $n  <  strlen ( $string )) {   $t  = ord( $string [ $n ]);   if ( $t  == 9 ||  $t  == 10 || (32 <=  $t  &&  $t  <= 126)) {   $tn  = 1;  $n ++;  $noc ++;   }  elseif (194 <=  $t  &&  $t  <= 223) {   $tn  = 2;  $n  += 2;  $noc  += 2;   }  elseif (224 <=  $t  &&  $t  <= 239) {   $tn  = 3;  $n  += 3;  $noc  += 2;   }  elseif (240 <=  $t  &&  $t  <= 247) {   $tn  = 4;  $n  += 4;  $noc  += 2;   }  elseif (248 <=  $t  &&  $t  <= 251) {   $tn  = 5;  $n  += 5;  $noc  += 2;   }  elseif ( $t  == 252 ||  $t  == 253) {   $tn  = 6;  $n  += 6;  $noc  += 2;   }  else  {   $n ++;   }   if ( $noc  >=  $length ) {   break ;   }   }   if ( $noc  >  $length ) {   $n  -=  $tn ;   }   $strcut  =  substr ( $string , 0,  $n );   }  else  {   for ( $i  = 0;  $i  <  $length ;  $i ++) {   $strcut  .= ord( $string [ $i ]) > 127 ?  $string [ $i ]. $string [++ $i ] :  $string [ $i ];   }  //开源代码phpfensi测试数据   }   $strcut  =  str_replace ( array ( '&' ,  '"' ,  '<' ,  '>' ),  array ( '&' ,  '"' ,  '<' ,  '>' ),  $strcut );   return   $strcut . $dot ;   } 

查看更多关于php中高性能中文字符串截取函数分享 - php函数的详细内容...

  阅读:57次