php中文字符串截取函数

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

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