php中文字符串截取函数

三月 24, 2019 | views
Comments 0

下面这二款函数是二款双字节字符串截取函数,那就是针对中文字符串截取了,好了第一款汉字中文截取函数是越级简洁了,后一款复杂但考虑更多一些.

  1. <?php 
  2. //php 中文字符串截取函数 
  3. /* 
  4.  
  5. */ 
  6. function substr($str = ''$offset = 0, $len = 0){ 
  7.     $len || ($len = strlen($str)); 
  8.     preg_match_all('/./us'$str$result); 
  9.     return implode(''array_slice($result[0], $offset$len)); 
  10. }  
  11.  
  12. //方法二,代码如下 
  13. if (!function_exists('mb_substr')) { 
  14. function mb_substr($str$start$len = ''$encoding="utf-8"){ 
  15.   $limit = strlen($str); 
  16.  
  17.   for ($s = 0; $start > 0;--$start) {// found the real start 
  18.     if ($s >= $limit
  19.       break
  20.  
  21.     if ($str[$s] <= ""
  22.       ++$s
  23.     else { 
  24.       ++$s// skip length 
  25.  
  26.       while ($str[$s] >= "€" && $str[$s] <= "�"
  27.         ++$s
  28.     } 
  29.   } 
  30.  
  31.   if ($len == ''
  32.     return substr($str$s); 
  33.   else 
  34.     for ($e = $s$len > 0; --$len) {//found the real end 
  35.       if ($e >= $limit
  36.         break
  37.  
  38.       if ($str[$e] <= ""
  39.         ++$e
  40.       else { 
  41.         ++$e;//skip length 
  42.  
  43.         while ($str[$e] >= "€" && $str[$e] <= "�" && $e < $limit
  44.           ++$e;//开源代码phpfensi.com 
  45.       } 
  46.     } 
  47.  
  48.   return substr($str$s$e - $s); 
  49.  
  50.  
  51. ?>



zend