中文字符截取函数

1. 截取GB2312中文字符串的函数

PHP代码
  1. <?php    
  2. //截取中文字符串   
  3. function mysubstr($str$start$len) {   
  4.     $tmpstr = "";   
  5.     $strlen = $start + $len;   
  6.     for($i = 0; $i < $strlen$i++) {   
  7.         if(ord(substr($str$i, 1)) > 0xa0) {   
  8.             $tmpstr .= substr($str$i, 2);   
  9.             $i++;   
  10.         } else  
  11.         $tmpstr .= substr($str$i, 1);   
  12.     }   
  13.     return $tmpstr;   
  14. }   
  15. ?>  

2. 截取UTF-8编码的多字节字符串的函数

PHP代码
  1. <?php    
  2. //截取UTF-8字符串   
  3. function utf8Substr($str$from$len)   
  4. {   
  5.     return preg_replace(‘#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$from.‘}’.   
  6.     ‘((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$len.‘}).*#s’,   
  7.     ‘$1’,$str);   
  8. }   
  9. ?>  

3. UTF-8、GB2312都支持的汉字截取函数

PHP代码
  1. <?php    
  2. /*  
  3. UTF-8、GB2312都支持的汉字截取函数  
  4. cut_str(字符串, 截取长度, 开始长度, 编码);  
  5. 编码默认为 UTF-8 开始长度默认为 0  
  6. */  
  7.   
  8. function cut_str($string$sublen$start = 0, $code = ‘UTF-8’)   
  9. {   
  10.     if($code == ‘UTF-8’)   
  11.     {   
  12.         $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]/";   
  13.         preg_match_all($pa$string$t_string);   
  14.   
  15.         if(count($t_string[0]) – $start > $sublenreturn join(array_slice($t_string[0], $start$sublen))."…";   
  16.         return join(array_slice($t_string[0], $start$sublen));   
  17.     }   
  18.     else  
  19.     {   
  20.         $start = $start*2;   
  21.         $sublen = $sublen*2;   
  22.         $strlen = strlen($string);   
  23.         $tmpstr = ;   
  24.   
  25.         for($i=0; $i$strlen$i++)   
  26.         {   
  27.             if($i>=$start && $i< ($start+$sublen))   
  28.             {   
  29.                 if(ord(substr($string$i, 1))>129)   
  30.                 {   
  31.                     $tmpstr.= substr($string$i, 2);   
  32.                 }   
  33.                 else  
  34.                 {   
  35.                     $tmpstr.= substr($string$i, 1);   
  36.                 }   
  37.             }   
  38.             if(ord(substr($string$i, 1))>129) $i++;   
  39.         }   
  40.         if(strlen($tmpstr)< $strlen ) $tmpstr.= "…";   
  41.         return $tmpstr;   
  42.     }   
  43. }   
  44.   
  45. $str = "abcd需要截取的字符串";   
  46. echo cut_str($str, 8, 0, ‘gb2312’);   
  47. ?>  

关于浪漫谎言

浪漫谎言,ALLCAN工作室创始人,从事网站开发、网站美工、网络编程等。
此条目发表在PHP分类目录,贴了, , , , 标签。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注