php字符串截取 中英文混排

php字符串截取经常用到,此函数将中英文按照1比3截取,如果按照1比2截取将$noc += 3;改成$noc += 2;

从网上找的一个处理函数

  
  
  
  
  1. function _str_cut($sourcestr,$cutlength,$suffix='...') { 
  2.         $str_length = strlen($sourcestr); 
  3.         if($str_length <= $cutlength) { 
  4.             return $sourcestr
  5.         } 
  6.         $returnstr=''
  7.         $n = $i = $noc = 0; 
  8.         while($n < $str_length) { 
  9.             $t = ord($sourcestr[$n]); 
  10.             if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) { 
  11.                 $i = 1; 
  12.                 $n++; 
  13.                 $noc++; 
  14.             } elseif(194 <= $t && $t <= 223) { 
  15.                 $i = 2; 
  16.                 $n += 2; 
  17.                 $noc += 3; 
  18.             } elseif(224 <= $t && $t <= 239) { 
  19.                 $i = 3; 
  20.                 $n += 3; 
  21.                 $noc += 3; 
  22.             } elseif(240 <= $t && $t <= 247) { 
  23.                 $i = 4; 
  24.                 $n += 4; 
  25.                 $noc += 3; 
  26.             } elseif(248 <= $t && $t <= 251) { 
  27.                 $i = 5; 
  28.                 $n += 5; 
  29.                 $noc += 3; 
  30.             } elseif($t == 252 || $t == 253) { 
  31.                 $i = 6; 
  32.                 $n += 6; 
  33.                 $noc += 3; 
  34.             } else { 
  35.                 $n++; 
  36.             } 
  37.             if($noc >= $cutlength) { 
  38.                 break
  39.             } 
  40.         } 
  41.         if($noc > $cutlength) { 
  42.             $n -= $i
  43.         } 
  44.         $returnstr = substr($sourcestr, 0, $n); 
  45.         if ( substr($sourcestr$n, 6)){ 
  46.           $returnstr = $returnstr . $suffix;//超过长度时在尾处加上省略号 
  47.         }   
  48.         return $returnstr
  49.     } 

你可能感兴趣的:(PHP,字符串截取,中英文,混排)